2011-09-28 70 views
0

我有从多个maven模块构建单个可执行jar的问题。 所以这里的情况:我有三个maven模块:应用程序 - >持久性 - >域。我也有父pom.xml。我加入到这一父POM行家组件插件:从多个maven模块构建可执行jar

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <archive> 
      <manifest> 
       <mainClass>com.toys.app.Service</mainClass> 
      </manifest> 
     </archive> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
    </configuration> 
</plugin> 

因此,当我从命令行在父POM目录(其含有parent.pom和应用程式,持久性和域行家模块)类型的命令:MVN组件:组件 它给了我一个错误:

[INFO] ------------------------------------------------------------------------ 
[INFO] Building persistence 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (default-cli) @ persistence --- 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] parent ..................................... SUCCESS [3.147s] 
[INFO] domain ............................................ SUCCESS [4.765s] 
[INFO] persistence ....................................... FAILURE [0.570s] 
[INFO] app ............................................... SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 9.287s 
[INFO] Finished at: Wed Sep 28 12:30:26 CEST 2011 
[INFO] Final Memory: 6M/81M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (default-cli) on project persistence: Failed to create assembly: Failed to resolve dependencies for project: com.toys:persistence:jar:1.0-SNAPSHOT: Missing: 
[ERROR] ---------- 
[ERROR] 1) com.toys:domain:jar:1.0-SNAPSHOT 
[ERROR] 
[ERROR] Try downloading the file manually from the project website. 
[ERROR] 
[ERROR] Then, install it using the command: 
[ERROR] mvn install:install-file -DgroupId=com.toys -DartifactId=domain -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file 
[ERROR] 
[ERROR] Alternatively, if you host your own repository you can deploy the file there: 
[ERROR] mvn deploy:deploy-file -DgroupId=com.toys -DartifactId=domain -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id] 
[ERROR] 
[ERROR] Path to dependency: 
[ERROR] 1) com.toys:persistence:jar:1.0-SNAPSHOT 
[ERROR] 2) com.toys:domain:jar:1.0-SNAPSHOT 
[ERROR] 
[ERROR] ---------- 
[ERROR] 1 required artifact is missing. 
[ERROR] 
[ERROR] for artifact: 
[ERROR] com.toys:persistence:jar:1.0-SNAPSHOT 
[ERROR] 
[ERROR] from the specified remote repositories: 
[ERROR] central (http://repo1.maven.org/maven2, releases=true, snapshots=false) 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :persistence 

每隔Maven的生命周期正常工作!谁能帮我?

+0

那些依赖项的范围是什么? – Thomas

+0

默认情况下,这是“编译” –

回答

0

尝试添加执行阶段:

 <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
        <mainClass>com.toys.app.Service</mainClass> 
        </manifest> 
       </archive>    
       <descriptorRef>jar-with-dependencies</descriptorRef>     
      </configuration> 
      <executions> 
       <execution> 
        <id>make-jar-with-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
+0

这是工作,但是当我提取这个罐子,没有包和类写我写的! –

+0

你如何运行这个构建?首先:尝试在每个子模块上运行“安装”。然后在所需模块上运行'包'目标。 –

+0

我试图在每个模块上运行“install”,域模块成功完成,但依赖于域模块的持久性模块给了我一个错误:** [ERROR]无法执行项目持久性目标:无法解析依赖关系for project com.toys:persistence:jar:1.0-SNAPSHOT:无法为[com.toys:domain:jar:1.0-SNAPSHOT(compile),org.springframework:spring-tx:jar:3.0.5.RELEASE收集依赖关系(编译),...]:无法读取com.toys:domain:jar:1.0-SNAPSHOT的工件描述符:无法找到工件com.toys:parent:pom:1.0-SNAPSHOT - > [Help 1] ** –

0

我建议你添加在同一水平上为您的应用程序,持久性,领域工程项目“分配”。

<project> 

    <artifactId>distribution</artifactId> 
    <packaging>pom</packaging> 

    <parent> 
    ... 
    </parent> 

    <dependencies> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>app</artifactId> 
     <version>${project.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>persistence</artifactId> 
     <version>${project.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>domain</artifactId> 
     <version>${project.version}</version> 
     <scope>runtime</scope> 
    </dependency> 
    </dependencies> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
      <archive> 
       <manifest> 
       <mainClass>com.toys.app.Service</mainClass> 
       </manifest> 
      </archive>    
      <descriptorRef>jar-with-dependencies</descriptorRef>     
      </configuration> 
      <executions> 
      <execution> 
       <id>make-jar-with-dependencies</id> 
       <phase>package</phase> 
       <goals> 
       <goal>single</goal> 
       </goals> 
      </execution> 
      </executions> 
     <plugin> 
    </plugins> 
    </build> 

</project> 

我在尝试在移动到自己的项目后创建分布在反应器POM中时遇到了类似的问题 - 没有头痛。

此外,不要忘记添加'分配'模块到反应堆项目。

相关问题