2014-04-10 5 views
0

저는 모듈 식 프로젝트를 만들고 있습니다.모듈 식 프로젝트의 속성 대체

<persistence> 

<persistence-unit name="myUnit"> 

    //Some classes definition 

    <properties> 

    <property name="javax.persistence.jdbc.driver" value="${db.driverClass}" /> 
    <property name="javax.persistence.jdbc.url" value="${db.connectionURL}" /> 
    <property name="javax.persistence.jdbc.user" value="${db.username}" /> 
    <property name="javax.persistence.jdbc.password" value="${db.password}" /> 

    </properties> 


</persistence-unit> 

와 나는 자원에 필터링 가능 : 나는 몇 가지 속성 참조가 persistence.xml 파일을 가지고있는 모델 모듈에서

|-- parent 
    |-- model 
     --pom.xml 
    |-- services 
     --pom.xml 
    |-- web-app 
     --pom.xml 

: 내 프로젝트의 골격은 다음과 같다 모델의 pom.xml을 통해

<build> 
    <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
    </resources> 
</build> 

이제 t에서 프로필을 정의해야합니다. 그는 웹 응용 프로그램의 pom.xml 파일

<profiles> 
<profile> 
     <id>Development</id> 
     <properties> 
      <db.driverClass>MyDriver</db.driverClass> 
      <db.connectionURL>jMyUrl</db.connectionURL> 
      <db.username>MyUsername</db.username> 
      <db.password>MyPassword</db.password> 
     </properties> 
    </profile> 
</profiles> 

<!-- To launch embded jetty server --> 
<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>${maven-jetty-plugin.version}</version> 
</plugin> 

및 교체의 값으로 참조 I 실행 "MVN 부두 : 실행 -P 개발". 그러나 이것은 작동하지 않습니다.

어떻게 해결할 수 있습니까?

답변

1

Maven은 계층 적 접근 방식을 사용합니다.
이것은 프로파일이 정의 된 모듈과 그 하위에서만 활성화된다는 것을 의미합니다. 같은 속성에 대한 간다.
필터 할 파일이 속성을 정의하고있는 형제 모듈에 있습니다. 따라서 model 모듈에 전파되지 않습니다.

+0

나는 그것을 간과했다. – blackbuild

+0

부모 프로젝트에서 개발 프로파일을 옮겼습니다. 이제 부모로부터 "mnv install -P Development"를 실행하면 모든 것이 작동합니다. – Skizzo

1

mvn jetty:run 리소스를 복사하지 않으므로 필터링되지 않습니다. 주로 IDE와 함께 작동하도록 설계되었으므로 IDE가 변경하면 IDE가 변경 사항을 컴파일/복사합니다.

콘솔에서 호출하는 경우 라이프 사이클 (또는 최소한 process-resources 단계를 명시 적으로 실행해야합니다.

그래서 하나 jetty:run을 실행하고 다른 하나는 수요에 mvn process-classes를 실행하는 두 개의 별도의 껍질로 실행을 분할 수, 이상적으로

mvn process-classes jetty:run 

같은 것을보십시오.

또는 IDE를 사용하십시오.