2010-05-13 4 views
1

내 프로젝트의 install4j에 대한 maven 플러그인을 사용 중입니다. 위치는 here입니다. 이 플러그인을 사용하면 <compilerVariables> 섹션을 사용하여 install4j에 변수를 전달할 수 있습니다. 여기 내 치어 관련 부분입니다 :Maven : 속성이 대체되지 않음

<plugin> 
    <groupId>com.google.code.maven-install4j</groupId> 
    <artifactId>maven-install4j-plugin</artifactId> 
    <version>0.1.1</version> 
    <configuration> 
     <executable>${devenv.install4jc}</executable> 
     <configFile>${basedir}/newinstaller/ehd.install4j</configFile> 
     <releaseId>${project.version}</releaseId> 
     <attach>false</attach> 
     <skipOnMissingExecutable>false</skipOnMissingExecutable> 
     <compilerVariables> 
      <property> 
       <name>m2_home</name> 
       <value>${settings.localRepository}</value> 
      </property> 
     </compilerVariables> 
    </configuration> 
</plugin> 

문제는 내가 플러그인을 실행하면 $ {settings.localRepository가} 실제 디렉토리로 대체되지 않을 것입니다. 다음은 install4j가 생성하는 명령 행 스크립트입니다.

[INFO] Running the following command for install4j compile: /bin/sh -c /home/zach/install4j/bin/install4jc --release=9.1-SNAPSHOT --destination="/home/zach/projects/java/ehdtrunk/target/install4j" -D m2_home=${settings.localRepository} /home/zach/projects/java/ehdtrunk/newinstaller/ehd.install4j 

플러그인의 결함입니까? 그렇다면 대체를 허용하기 위해 무엇을 변경해야합니까?

답변

1

문제의 플러그인은 Properties 인스턴스 인 매개 변수를 허용합니다. 어떤 이유로 든 Properties 인스턴스를 구성하는 데 사용 된 표현식은 자동으로 평가되지 않습니다. $ {settings.localRepository}를 평가하기 위해 org.apache.maven.plugin.PluginParameterExpressionEvaluator를 사용하도록 플러그인을 변경해야했습니다.

1

다음 POM은 (Maven을 2.2.1로) 나를 위해 작동 :

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>Q2828732</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
    ... 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>validate</phase> 
      <configuration> 
       <tasks> 
       <echo>${settings.localRepository}</echo> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

및 MVN 과정-능숙를 실행하면 다음과 같은 출력이 생성

 
$ mvn validate 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q2828732 
[INFO] task-segment: [validate] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [antrun:run {execution: default}] 
[INFO] Executing tasks 
    [echo] /home/pascal/.m2/repository 
[INFO] Executed tasks 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2 seconds 
[INFO] Finished at: Thu May 13 19:28:38 CEST 2010 
[INFO] Final Memory: 3M/54M 
[INFO] ------------------------------------------------------------------------ 

당신을 위해 위의 작업을 하는가를 ? M2Eclipse를 사용하고 있습니까? MNGECLIPSE-299과 관련이 있습니까?

+0

이것은 직선 명령 줄 Maven 2입니다. 그리고 예, antrun 플러그인에서 해당 속성을 사용할 때 올바른 결과를 얻습니다. 플러그인에 문제가있는 것으로 보입니다. antrun 플러그인이 그런 속성 입력으로 무엇을하는지 알아보고이 플러그인에 적용 할 수 있는지 확인합니다. – UrLicht

+0

@jobrahms * 플러그인에 문제가있는 것으로 보입니다. * 그렇습니다. –

+0

@jobrahms 나는 'mvn help : evaluate'을 사용하여 antrun 밖에서 속성을 테스트하고 적절히 해결되었는지 확인했습니다. –

관련 문제