Maven antrun: pass maven properties to ant

前端 未结 3 1847
不知归路
不知归路 2021-01-07 23:20

I am trying to pass maven properties (defined through profiles) to a antrun execution:


    

        
相关标签:
3条回答
  • 2021-01-07 23:47

    On the newer versions of maven you can just use:

    <taskdef  resource="net/sf/antcontrib/antcontrib.properties"
                        classpathref="maven.plugin.classpath" />
    

    example:

       <build>
    ....    
           <plugins>
             ....
        <plugin>
             <artifactId>maven-antrun-plugin</artifactId>
             <executions>
                <execution>
                <phase>install</phase>
                <goals>
                    <goal>run</goal>
                </goals>
                <configuration>
                <tasks>
                  <taskdef  resource="net/sf/antcontrib/antcontrib.properties"
                                            classpathref="maven.plugin.classpath" />
    
                  <echo message="Project name from Maven: ${project.name}" />
    
                </tasks>
            </configuration>
             </execution>
           </executions>
        </plugin>
             ....
          </plugins>
             ....
       </build>
    

    <dependencies>
    <dependency>
        <groupId>ant-contrib</groupId>
        <artifactId>ant-contrib</artifactId>
        <version>1.0b3</version>
        <exclusions>
            <exclusion>
                <groupId>ant</groupId>
                <artifactId>ant</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>ant</groupId>
        <artifactId>ant-nodeps</artifactId>
        <version>1.6.5</version>
    </dependency>
    </dependencies>
    
    0 讨论(0)
  • 2021-01-08 00:05

    Most properties are automatically passed along to ant, at least if you're running an inlined ant script. Some of the properties get renamed. I suggest running "mvn -X" and the antrun plugin prints a list of all the variable mappings into ant (things like basedir becomes project.basedir, etc.)

    0 讨论(0)
  • 2021-01-08 00:07

    You can pass the properties by defining new Ant properties (using the property tag in your target within the configuration). So for example:

    <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>
    

    When I execute mvn compile on this pom the output is:

    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
    

    and when the command is mvn -PcustomProfile compile then the output is:

    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
    

    This works using maven 3.0.5.

    0 讨论(0)
提交回复
热议问题