블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
04-20 17:06
 

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

최근에 올라온 글

최근에 달린 댓글

'Velocity'에 해당되는 글 1건

  1. 2009.07.22 [Maven] ${packageInPathFormat} is not a valid reference. 아오!!

요즘에 만들고 있는 maven archetype에 iBatis를 넣을 일이 있어서 설정을 하다보니 sqlmap-config에 resource location이 들어가는 부분이 있는 것을 확인하였습니다.

<sqlMapConfig>

 

        <sqlMap resource="kr/co/vicki/gwt/portal/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>


다른 파일들은 ${package} 라는 프로퍼티를 사용할 수 있는데, location 같은 '/' 로 구분자를 두는 부분을 어떻게 처리해야 할지 몰라서 고민하던 그때 ${packageInPathFormat} 라는 것을 발견할 수 있었습니다.

즉, groupId가 kr.co.vicki.gwt.portal 이라면
${package} = kr.co.vicki.gwt.portal
${packageInPathFormat} = kr/co/vicki/gwt/portal
으로 변환이 된다는 이야기입니다.

쉽게 해결할 수 있다는 생각에 마음의 안정을 찾고 만든 archetype을 가지고 새로운 프로젝트를 생성하는데 다음과 같은 경고메세지가 떨어졌습니다.
[WARNING] org.apache.velocity.runtime.exception.ReferenceException: reference : template = archetype-resources/src/main/webapp/WEB-INF/sqlmap-config.xml [line 11,column 27] : ${packageInPathFormat} is not a valid reference.

물론 결과는 이런식으로... 변환이 되지 않은 그대로의 sqlmap-config 가 나왔습니다.

<sqlMapConfig>

 

        <sqlMap resource="${packageInPathFormat}/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>



maven source repository의 소스도 체크아웃 받아서 훑어보고, 구글을 찾아봐도 저 경고에 대한 답은 찾을 수 없었습니다.
머 찾은 것이라고는 위와 관련된 버그 리포팅을 정리한 페이지만 찾을 수 있었습니다.
(내용은 원래 잘 되던건데 왜 다시 reopen 했냐는 이야기만...)

구글과 구글코드 서치를 계속 뒤지던 중에 archetype 파일들 상단에 이상한 것들이 있는 것을 발견할 수 있었습니다.

#set( $symbol_pound = '#' )

#set( $symbol_dollar = '$' )

#set( $symbol_escape = '\' )



검색을 해보니 Velocity 문법이더군요... Maven이 Velocity를 사용한다는 것을 알게 되었습니다.
 Apache Velocity is an open source software project directed by the Apache Software Foundation. Velocity is a Java-based template engine that provides a simple yet powerful template language to reference objects defined in Java code. Its aim is to ensure clean separation between the presentation tier and business tiers in a Web application (see model-view-controller design pattern).

Wikipedia 에서는 Apache Velocity에 대해서 위와 같이 설명을 하는 군요. Java-based 라는 것을 발견하고, Velocity 문법을 살짝 본 후, 다음과 같이 설정을 하고 배포를 해보았습니다.

#set( $symbol_pound = '#' )

#set( $symbol_dollar = '$' )

#set( $symbol_escape = '\' )

#set( $packageInPathFormat = $package.replaceAll('\.', '/') )

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMapConfig

    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"

    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

 

<sqlMapConfig>

 

        <sqlMap resource="${packageInPathFormat}/dao/mysql/sqlmap/Member.xml" />

 

</sqlMapConfig>


다시 로컬 리포지토리에 install 하고, 새로운 프로젝트를 만들어서 확인해보니 원하는 결과를 확인할 수 있었습니다.


큼큼... 저만 저런 결과를 본 것 일까요... 구글에도 관련 내용이 거의 없는 걸 보아하니 영 깨름직합니다.
삽질한거 같아서...





Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백