2017-06-13 121 views
0

我有一个maven多模块项目。简化pom.xml(下full-build)看起来像如下: -在maven并行版本的情况下执行maven ant-run插件

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <packaging>pom</packaging> 
    <groupId>com.eros</groupId> 
    <artifactId>full-build</artifactId> 
    <version>0.001-SNAPSHOT</version> 
    <name>full-build</name> 
    <profiles> 
     <profile> 
      <id>build-only</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <modules> 
       <module>../../main</module> 
      </modules> 
     </profile> 
     <profile> 
      <id>copy-only</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <version>1.8</version> 
         <executions> 
          <execution> 
           <phase>package</phase> 
           <configuration> 
            <tasks> 
             <!-- collector --> 
             <copy file="../collector-framework/collector/target/collector-${project.version}.jar" 
               tofile="./target/collector/collector-${project.version}.jar"/> 
            </tasks> 
           </configuration> 
           <goals> 
            <goal>run</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
</project> 

简化pom.xmlmain看起来象下面这样: -

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.eros</groupId> 
    <artifactId>main</artifactId> 
    <version>0.001-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>main</name> 
    <modules> 
     <module>collector-framework</module> 
    </modules> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-enforcer-plugin</artifactId> 
       <version>1.4</version> 
       <executions> 
        <execution> 
         <id>enforce-versions</id> 
         <goals> 
          <goal>enforce</goal> 
         </goals> 
         <configuration> 
          <rules> 
           <requireJavaVersion> 
            <version>[1.8,)</version> 
            <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> 
           </requireJavaVersion> 
          </rules> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

每当我试着用mvn clean install -T 4收集的框架来执行上述项目项目被跳过并且构建失败,出错

Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.8:run (default) on project full-build: An Ant BuildException has occured: Warning: Could not find file /Users/tuk/code/github/eros/main/collector-framework/collector/target/collector-0.001-SNAPSHOT.jar to copy. 
[ERROR] around Ant part ...<copy file="../collector-framework/collector/target/collector-0.001-SNAPSHOT.jar" tofile="./target/collector/collector-0.001-SNAPSHOT.jar"/>... @ 4:143 in /Users/tuk/code/github/eros/main/full-build/target/antrun/build-main.xml 

E如果我只是做mvn clean install,东西可以正常工作。我认为这是因为在模块执行完成之前运行ant-run。有人可以让我知道我怎么才能让ant-run等到主模块编译完成并行构建的情况下?

  • Maven版本 - 3.5.0

回答

0

要解决这个我添加的collector-framework依赖于maven-antrun-plugin象下面这样: -

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.8</version> 
     <dependencies> 
      <dependency> 
      <groupId>a.b.c</groupId> 
      <artifactId>collector</artifactId> 
      <version>0.001-SNAPSHOT</version> 
      </dependency> 
     </dependencies> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <configuration> 
       <tasks> 
       <!-- collector --> 
       <copy file="../collector-framework/collector/target/collector-${project.version}.jar"             tofile="./target/collector/collector-${project.version}.jar"/> 
       </tasks> 
      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

上述变化使得Maven的antrun等待到收集器jar被创建。