1

私はここにある私のプロジェクトでinstall4jにmavenプラグインを使用しています。このプラグインを使用すると、セクションを使用して変数をinstall4jに渡すことができます<compilerVariables>。これが私のpomの関連セクションです:

<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

これはプラグインのせいですか?もしそうなら、置換が行われるようにするために何を変更する必要がありますか?

4

2 に答える 2

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 process-ressourcesを実行すると、次の出力が生成されます。

$mvn検証
[情報]プロジェクトをスキャンしています...
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報]建物Q2828732
[INFO]タスクセグメント:[検証]
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報][antrun:run {実行:デフォルト}]
[情報]タスクの実行
     [エコー]/home/pascal/.m2/repository
[INFO]実行されたタスク
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報]成功を収める
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------
[情報]合計時間:2秒
[情報]終了日:2010年5月13日木曜日19:28:38 CEST
[情報]最終メモリ:3M / 54M
[情報]  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - - -------------------------

上記はあなたのために働きますか?M2Eclipseを使用していますか?MNGECLIPSE-299と関係があるのでしょうか?

于 2010-05-13T17:31:35.897 に答える
1

問題のプラグインは、プロパティインスタンスであるパラメータを受け入れます。何らかの理由で、プロパティインスタンスの構成に使用される式は自動的に評価されません。${settings.localRepository}を評価するためにorg.apache.maven.plugin.PluginParameterExpressionEvaluatorを使用するようにプラグインを変更する必要がありました。

于 2010-05-17T23:02:44.330 に答える