Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将maven属性传递给ant运行插件_Java_Maven_Ant_Pom.xml_Parent Pom - Fatal编程技术网

Java 无法将maven属性传递给ant运行插件

Java 无法将maven属性传递给ant运行插件,java,maven,ant,pom.xml,parent-pom,Java,Maven,Ant,Pom.xml,Parent Pom,我在传递自定义maven属性(版本)时遇到问题 到maven使用maven antrun插件执行的脚本。 我已经读过了,但这并没有解决问题 我的问题与上述SO问题中给出的问题有一个区别 在我的例子中,maven-antrun插件作为父项目的子项目执行,其中属性被定义为所有模块的全局属性 maven antrun插件是该项目的一个模块 父pom代码段如下所示: <project ...> <!-- Parent --> <modelVersion>4.

我在传递自定义maven属性(版本)时遇到问题 到maven使用
maven antrun插件执行的脚本。

我已经读过了,但这并没有解决问题

我的问题与上述SO问题中给出的问题有一个区别

在我的例子中,
maven-antrun插件
作为父项目的子项目执行,其中属性被定义为所有模块的全局属性

maven antrun插件是该项目的一个模块

父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>
以下maven构建错误发生在包含antrun maven插件的子模块的构建过程中

`An Ant BuildException has occured: Reference 0.0.3-SNAPSHOT` not found
这很有趣,因为这是maven属性的值

我还尝试使用简单的属性名作为

refid attribute 
就我而言

<property name="target-version" refid="my.project.version"/>
ant脚本使用如下属性

<property name="myproject-jar" value="mymodulename-${target-version}.jar"/>


我的配置中是否有错误,或者该属性是在父pom中定义的问题。因此可能是maven生命周期问题?

我对
属性
-标记使用了错误的attibute名称
refid
。将属性更改为
解决了问题。此外,我将
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 antrun插件
蚂蚁魔法
准备包装
跑

首先,您的pom代码片段看起来不像是从父代继承的,如果您在一个更大的多模块构建的模块中,情况就是这样……此外,问题是您为什么要使用maven antrun插件?@khmarbaise首先,因为我只想展示问题的相关部分,在本例中是pom代码片段。第二,我使用蚂蚁插件,因为我需要建立本地C++,JNI,东西,这样看来对我来说是最实用的方式。也许你可以给我一个很好的解决方案来构建一个C++项目。使用Maven,关于适当的java客户端利用它的功能性。我可以推荐看看……是的OK THX。我知道这个插件。这是下一步,很多配置的东西。但是你能不能给我一个解决我的问题的办法,而不是别的办法。因为现在只需手动更改属性,问题就很容易解决。我问这个问题是因为我觉得这是一种非常奇怪的行为。因为关于引用,所以问题应该没有问题。Ant属性是否允许包含连字符?
<property name="myproject-jar" value="mymodulename-${target-version}.jar"/>
<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>