无法将 maven 属性 传递给 ant 运行 插件
Unable to pass maven property to ant run plugin
我在传递自定义 maven 属性(版本)时遇到问题
到 maven 使用 maven-antrun-plugin.
执行的脚本
我已经阅读了 Maven antrun: pass maven properties to ant 但这并没有解决问题。
我的问题与上述 SO 问题中给出的问题有一处不同。
在我的例子中,maven-antrun-plugin
作为父项目的子项目执行,其中 属性 被定义为所有模块的全局 属性。
maven-ant运行-plugin 是项目的一个模块。
父 pom 片段如下所示:
<project ...>
<!-- Parent -->
<modelVersion>4.0.0</modelVersion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<my.project.version>0.0.3-SNAPSHOT</my.project.version>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
ant 运行 pom 看起来像这样。 属性 被命名为 target.version
<project>
<!-- Module -->
<parent>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-magic</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<property name="compile_classpath"
refid="maven.compile.classpath"/>
<property name="outputDir"
value="${project.build.outputDirectory}"/>
<property name="sourceDir"
value="${project.build.sourceDirectory}"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="target-version" refid="${my.project.version}"/>
<echo message="Passed target version to ant build script: ${target-version}"/>
<ant antfile="${basedir}/src/main/ant/create-dist.xml"
target="deploy-ea"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
在执行包含 ant运行-maven-plugin.
的子模块的构建过程中发生以下 maven 构建错误
`An Ant BuildException has occured: Reference 0.0.3-SNAPSHOT` not found
这很有趣,因为这是 maven 的价值 属性。
我还尝试使用简单的 属性 名称作为
的参数
refid attribute
就我而言
<property name="target-version" refid="my.project.version"/>
这会导致以下错误:
An Ant BuildException has occured: Reference my.project.version not found
ant脚本使用属性如下
<property name="myproject-jar" value="mymodulename-${target-version}.jar"/>
是我的配置有误还是 属性 是在父 pom.xml 中定义的问题?因此可能是 Maven 生命周期问题?
我为 property
-标签使用了错误的属性名称 refid
。将属性更改为 value
解决了问题。此外,我将 tasks
标记替换为 target
,因为它被标记为已弃用。但这对给定的问题没有影响。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-magic</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<property name="compile_classpath"
refid="maven.compile.classpath"/>
<property name="outputDir"
value="${project.build.outputDirectory}"/>
<property name="sourceDir"
value="${project.build.sourceDirectory}"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="target-version" value="${my.project.version}"/> <!-- PROBLEM refid should be value-->
<echo message="Passed target version to ant build script: ${target-version}"/>
<ant antfile="${basedir}/src/main/ant/create-dist.xml"
target="deploy-ea"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
我在传递自定义 maven 属性(版本)时遇到问题
到 maven 使用 maven-antrun-plugin.
我已经阅读了 Maven antrun: pass maven properties to ant 但这并没有解决问题。
我的问题与上述 SO 问题中给出的问题有一处不同。
在我的例子中,maven-antrun-plugin
作为父项目的子项目执行,其中 属性 被定义为所有模块的全局 属性。
maven-ant运行-plugin 是项目的一个模块。
父 pom 片段如下所示:
<project ...>
<!-- Parent -->
<modelVersion>4.0.0</modelVersion>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<my.project.version>0.0.3-SNAPSHOT</my.project.version>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<java.version>1.7</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
ant 运行 pom 看起来像这样。 属性 被命名为 target.version
<project>
<!-- Module -->
<parent>
<groupId>xxx</groupId>
<artifactId>xxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-magic</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<property name="compile_classpath"
refid="maven.compile.classpath"/>
<property name="outputDir"
value="${project.build.outputDirectory}"/>
<property name="sourceDir"
value="${project.build.sourceDirectory}"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="target-version" refid="${my.project.version}"/>
<echo message="Passed target version to ant build script: ${target-version}"/>
<ant antfile="${basedir}/src/main/ant/create-dist.xml"
target="deploy-ea"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
在执行包含 ant运行-maven-plugin.
的子模块的构建过程中发生以下 maven 构建错误`An Ant BuildException has occured: Reference 0.0.3-SNAPSHOT` not found
这很有趣,因为这是 maven 的价值 属性。
我还尝试使用简单的 属性 名称作为
的参数refid attribute
就我而言
<property name="target-version" refid="my.project.version"/>
这会导致以下错误:
An Ant BuildException has occured: Reference my.project.version not found
ant脚本使用属性如下
<property name="myproject-jar" value="mymodulename-${target-version}.jar"/>
是我的配置有误还是 属性 是在父 pom.xml 中定义的问题?因此可能是 Maven 生命周期问题?
我为 property
-标签使用了错误的属性名称 refid
。将属性更改为 value
解决了问题。此外,我将 tasks
标记替换为 target
,因为它被标记为已弃用。但这对给定的问题没有影响。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>ant-magic</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<property name="compile_classpath"
refid="maven.compile.classpath"/>
<property name="outputDir"
value="${project.build.outputDirectory}"/>
<property name="sourceDir"
value="${project.build.sourceDirectory}"/>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="target-version" value="${my.project.version}"/> <!-- PROBLEM refid should be value-->
<echo message="Passed target version to ant build script: ${target-version}"/>
<ant antfile="${basedir}/src/main/ant/create-dist.xml"
target="deploy-ea"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>