gpt4 book ai didi

maven - Maven Antrun:将Maven属性传递给ant

转载 作者:行者123 更新时间:2023-12-03 14:43:19 25 4
gpt4 key购买 nike

我试图将Maven属性(通过配置文件定义)传递给antrun执行:



<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<!-- ... these are ok -->
</dependencies>
<executions>
<execution>
<configuration>
<target>
<property name="ant_destDir" value="${destDir}" />
<property name="ant_serverDeploy" value="${serverDeploy}" />
<property name="ant_deployDir" value="${deployDir}" />
<property name="ant_userDeploy" value="${userDeploy}" />
<property name="ant_passwordDeploy" value="${passwordDeploy}" />
<!-- correct task definitions for sshexec and scp -->
<sshexec host="${serverDeploy}" username="${userDeploy}"
password="${passwordDeploy}" trust="yes"
command="some command" />
<scp remoteTodir="${userDeploy}@${serverDeploy}:${destDir}"
password="${passwordDeploy}" trust="yes" sftp="true">
<fileset dir="${deployDir}" includes="*.jar" />
</scp>
<sshexec host="${serverDeploy}" username="${userDeploy}"
password="${passwordDeploy}" trust="yes"
command="some command" />
</target>
</configuration>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>


这些属性在配置文件中定义,以允许在不同的服务器中进行部署(我知道这不是最好的方法,但这是在此处完成的方式),如下所示:

<profile>
<id>aprofile</id>
<properties>
<property name="serverDeploy" value="somevalue" />
<property name="userDeploy" value="someuser" />
<property name="passwordDeploy" value="somepassword" />
<!-- and so on -->
</properties>
</profile>


我的问题是我无法在ant插件中使用Maven属性。我试图在ant中添加一个 <echoproperties>任务,以查看我拥有哪些属性,而没有maven属性的痕迹。
是否可以使用Maven定义的属性,还是应该使用其他方法?任何建议都欢迎。

编辑:我按照第一个答案修改了脚本,但仍然无法正常工作

最佳答案

您可以通过定义新的Ant属性(在property中的target中使用configuration标记)来传递属性。因此,例如:

<project xmlns="http://maven.apache.org/POM/4.0.0"  
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.test</groupId>
<artifactId>test-module</artifactId>
<name>test-module</name>
<version>SNAPSHOT</version>

<properties>
<my.custom.property>false</my.custom.property>
</properties>

<profiles>
<profile>
<id>customProfile</id>
<properties>
<my.custom.property>true</my.custom.property>
</properties>
</profile>
</profiles>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<configuration>
<target>
<property name="antProperty" value="${my.custom.property}"/>
<echo message="Custom Ant Property is: ${antProperty}"/>
<echoproperties />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


当我在此pom上执行 mvn compile时,输出为:

main:
[echo] Custom Ant Property is: false
[echoproperties] #Ant properties
[echoproperties] #Thu Aug 08 17:17:30 CEST 2013
[echoproperties] ant.project.name=maven-antrun-
[echoproperties] ant.version=Apache Ant(TM) version 1.8.2 compiled on December 20 2010
[echoproperties] antProperty=false


当命令为 mvn -PcustomProfile compile时,输出为:

main:
[echo] Custom Ant Property is: true
[echoproperties] #Ant properties
[echoproperties] #Thu Aug 08 17:18:30 CEST 2013
[echoproperties] ant.project.name=maven-antrun-
[echoproperties] ant.version=Apache Ant(TM) version 1.8.2 compiled on December 20 2010
[echoproperties] antProperty=true


这可以在maven 3.0.5中使用。

关于maven - Maven Antrun:将Maven属性传递给ant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com