2016-09-27 3 views
1

파일 필터를 사용하여 maven-ear-plugin에서 생성 된 application.xml 파일을 필터링하려고합니다. 내 프로젝트 구조는 Maven의 표준이다. 모든 것이 잘 작동 여기까지 최대생성 된 Maven EAR 플러그인 application.xml을 파일 필터로 필터링 할 수 있습니까?

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

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>test</groupId> 
    <artifactId>test-filter</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>ear</packaging> 

    <properties> 
     <prop1>xyz</prop1> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
        <version>6</version> 
        <env-entries> 
         <env-entry> 
          <env-entry-name>env1</env-entry-name> 
          <env-entry-type>java.lang.String</env-entry-type> 
          <env-entry-value>${prop1}</env-entry-value> 
         </env-entry> 
        </env-entries> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

:

여기 내 POM 파일입니다. 이 플러그인은 보간 된 값이 xyzenv1 항목을 포함하는 application.xml 파일을 생성합니다. 나는 특성에 메이븐 속성 prop1 이동 파일 및 필터 구성 할 때

문제

는 다음 filters 기능에 대한 이해를 위해

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

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>test</groupId> 
    <artifactId>test-filter</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>ear</packaging> 

    <build> 
     <filters> 
      <filter>src/main/filters/filter.properties</filter> 
     </filters> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.10.1</version> 
       <configuration> 
        <version>6</version> 
        <env-entries> 
         <env-entry> 
          <env-entry-name>env1</env-entry-name> 
          <env-entry-type>java.lang.String</env-entry-type> 
          <env-entry-value>${prop1}</env-entry-value> 
         </env-entry> 
        </env-entries> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

를,이 속성으로 해당하지만, 별도의 파일을 사용하고 있습니다. 그럼에도 불구하고 생성 된 application.xml은 을 포함하지 않고 보간없이 ${prop1}을 포함합니다. 물론

파일 src/main/filters/filter.properties이 존재하고 포함 : 내가 놓친 거지 뭔가

prop1=abc 

있습니까?

답변

1

제 생각에 플러그인을 실행하는 순서가 효과가 없습니다.

귀 플러그 인은 "generate-resources"중 프로세스에서 http://maven.apache.org/plugins/maven-ear-plugin/generate-application-xml-mojo.html이라는 아주 초기에 application.xml을 생성합니다.

다음 단계에서 필터링 실행을 수행하는 자원 플러그인 : 그래서 속성이 아마도 application.xml을 생성 될 때 읽을 수 없습니다 http://maven.apache.org/ref/3.3.9/maven-core/default-bindings.html#Plugin_bindings_for_ear_packaging

합니다.

속성 플러그인을 사용하는 것이 좋습니다 (예 : http://www.mojohaus.org/properties-maven-plugin/usage.html).이를 ear plugin에서 필터링 할 수 있도록 초기 단계에 바인딩하는 것이 좋습니다.

+1

'초기화'단계에 바인딩 된 속성 플러그인을 사용하는이 솔루션이 작동합니다. 감사! –