我在POM中嵌入了以下代码:
<plugin name="test">
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>validate</phase>
<configuration>
<tasks>
<pathconvert targetos="unix" property="project.build.directory.portable">
<path location="${project.build.directory}"/>
</pathconvert>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
然后我从${project.build.directory.portable}
操作中引用run project
,但它会以null
的形式返回。在Ant块中执行<echo>
会显示正确的值。我做错了什么?
答案 0 :(得分:11)
为了完整起见,mentioned feature已于2010年10月在maven-antrun-plugin
中实施。
您要查找的配置参数是exportAntProperties
。
使用示例:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7-SNAPSHOT</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<exec outputproperty="svnversion"
executable="svnversion">
<arg value=".." />
</exec>
</target>
<exportAntProperties>true</exportAntProperties>
</configuration>
</execution>
</executions>
</plugin>
作为旁注,在本文(2011-10-20)发布时,官方插件文档没有记录此选项。要获得插件的'versionXYZ'的帮助:
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-antrun-plugin:versionXYZ -Ddetail
答案 1 :(得分:3)
maven-antrun-plugin的1.7版本让我将一个属性从ant传递给maven(从mvn传递到ant)。一些示例代码,用于计算文件的md5校验和,然后将其存储到稍后由mvn访问的属性中:
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>ant-md5</id>
<phase>initialize</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<property name="compile_classpath" refid="maven.compile.classpath"/>
<property name="outputDir" value="${project.build.outputDirectory}"/>
<property name="sourceDir" value="${project.build.sourceDirectory}"/>
<checksum file="${sourceDir}/com/blah/db/blah.java" property="blah.md5db"/>
</target>
<exportAntProperties>true</exportAntProperties>
</configuration>
</execution>
</executions>
稍后可以在java文件中使用$ {blah.md5db}访问该属性。
答案 2 :(得分:0)
我不认为你可以从Ant设置一个属性,从Maven可见。你应该写一个Mojo。
答案 3 :(得分:0)
来自插件文档here:
尝试添加maven
前缀,这样就可以了
而是<path location="${maven.project.build.directory}"/>
如果这不起作用,您可能需要自己明确重新定义该属性:
<property name="maven.project.build.dir" value="${project.build.directory}"/>
<path location="${maven.project.build.directory}"/>