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

有问题的插件接受一个属性实例参数。无论出于何种原因,不会自动评估用于配置 Properties 实例的表达式。我不得不更改插件以使用 org.apache.maven.plugin.PluginParameterExpressionEvaluator 来评估 ${settings.localRepository}。

于 2010-05-17T23:02:44.330 回答
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 验证
[INFO] 正在扫描项目...
[信息] --------------------------------------------- -------------------------
[INFO] 楼 Q2828732
[INFO] 任务段:[验证]
[信息] --------------------------------------------- -------------------------
[信息] [antrun:运行{执行:默认}]
[INFO] 执行任务
     [回声] /home/pascal/.m2/repository
[INFO] 已执行的任务
[信息] --------------------------------------------- -------------------------
[信息] 构建成功
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:2 秒
[INFO] 完成时间:2010 年 5 月 13 日星期四 19:28:38 CEST
[INFO] 最终内存:3M/54M
[信息] --------------------------------------------- -------------------------

以上对你有用吗?你在使用 M2Eclipse 吗?它可能与MNGECLIPSE-299有关吗?

于 2010-05-13T17:31:35.897 回答