2013-04-21 169 views
5

建立一个多模块Maven项目我有一个项目的结构如下:如何詹金斯

ProjectParent 
- pom.xml 
ProjectApp 
    -pom.xml 
ProjectAPI 
    -pom.xml 
ProjectModels 
    -pom.xml 
ProjectServices 
    -pom.xml 
Etc.. 

ProjectModels/ProjectsServices不到ProjectAPI/ProjectApp依赖性。

  1. 我应该在Jenkins中创建单独的作业来分别构建每个模块吗?

  2. 我创建了一个工作为ProjectAPP但得到以下(已设定目标和行动 “全新安装” 以下错误:

[INFO]扫描的项目... [INFO ]
[INFO] -------------------------------------------- ---------------------------- [INFO] Building myproject-app 0.0.1-SNAPSHOT [INFO] ----- -------------------------------------------------- -----------------

Downloading: http://maven.springframework.org/snapshot/com/myproject/myproject-common-config/0.0.1-SNAPSHOT/myproject-common-config-0.0.1-SNAPSHOT.pom 
[WARNING] The POM for com.myproject:myproject-common-config:jar:0.0.1-SNAPSHOT is missing, 

没有依赖资料 下载:​​ [警告]为com.myproject的POM:myproject的实体中:jar:0.0.1-SNAPSHOT缺失,没有 依赖信息提供 下载:http://maven.springframework.org/snapshot/com/myproject/myproject-services/0.0.1-SNAPSHOT/myproject-services-0.0.1-SNAPSHOT.pom [警告] POM for com.myproject:myproject-services:jar:0.0.1-SNAPSHOT缺失,不存在 依赖关系信息 下载:http://maven.springframework.org/snapshot/com/myproject/myproject-persistence/0.0.1-SNAPSHOT/myproject-persistence-0.0.1-SNAPSHOT.pom [警告] com.myproject的POM:myproject-persistence:jar:0.0 .1-SNAPSHOT丢失,没有 依赖关系信息可用 正在下载:http://maven.springframework.org/snapshot/com/myproject/myproject-common-config/0.0.1-SNAPSHOT/myproject-common-config-0.0.1-SNAPSHOT.jar ...... org.apache.maven.lifecycle.LifecycleExecutionException:未能在项目上执行目标myproject-app:无法解析项目的依赖项 com.myproject:myproject-app:war:0.0 .1-SNAPSHOT: 以下工件无法解析: com.myproject:myproject-common-config:jar:0.0.1-SNAPSHOT, com.myproject:myproject-entities:jar:0.0.1-SNAPSHOT, com.myproject:myproject-services:jar:0.0.1-SNAPSHOT, com.myproject:myproject-persistence:jar:0.0.1 -snapshot:could not find artifact com.myproject:myproject-common-config:jar :0.0.1-SNAPSHOT org.springframework.maven.snapshot (http://maven.springframework.org/snapshot


ProjectParent双龙

<?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.myproject</groupId> 
    <artifactId>myproject-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
     <module>myproject-entities</module> 
     <module>myproject-services</module> 
     <module>myproject-persistence</module> 
     <module>myproject-app</module> 
     <module>myproject-merchant</module> 
     <module>myproject-common-config</module> 
     <module>myproject-api</module> 
    </modules> 

    <dependencyManagement> 
     <dependencies> 
      ... 
     </dependencies> 
    </dependencyManagement> 

    <repositories>  
     ... 
    </repositories> 

    <build> 
     ... 
    </build> 

    <properties> 
     ... 

     <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version> 
     <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version> 
     <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version> 
    </properties> 

</project> 


ProjectApp双龙

<?xml version="1.0"?> 
<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> 
    <parent> 
     <groupId>com.myproject</groupId> 
     <artifactId>myproject-parent</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 

    <artifactId>myproject-app</artifactId> 
    <packaging>war</packaging> 

    <version>0.0.1-SNAPSHOT</version> 
    <name>myproject-app</name> 
    <url>http://maven.apache.org</url> 


    <dependencies> 

     ... 

     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myproject-common-config</artifactId> 
      <version>${myproject-common-config}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myproject-entities</artifactId> 
      <version>${myproject-entities-version}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myproject-services</artifactId> 
      <version>${myproject-services-version}</version> 
     </dependency> 

     <dependency> 
      <groupId>com.myproject</groupId> 
      <artifactId>myproject-persistence</artifactId> 
      <version>${myproject-persistence-version}</version> 
     </dependency> 

    </dependencies> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

     <myproject-common-config>0.0.1-SNAPSHOT</myproject-common-config> 
     <myproject-entities-version>0.0.1-SNAPSHOT</myproject-entities-version> 
     <myproject-services-version>0.0.1-SNAPSHOT</myproject-services-version> 
     <myproject-persistence-version>0.0.1-SNAPSHOT</myproject-persistence-version> 
    </properties> 

</project> 


我使用了错误的目标是什么?我需要链接一些命令吗?即先构建其他模块?

我正在使用Maven 3。

注意:我将目标更改为“干净安装”,针对ParentProject Pom,并且所有内容都正确构建。

感谢

+2

你指定的父POM''节中所有其它模块?如果是这样,这应该工作。如果没有,你应该这样做。 – eis 2013-04-21 22:04:57

+0

您可以发布'ProjectAPP'的'pom.xml'吗? – 2013-04-22 05:46:33

回答

4

的问题是,你不能为ProjectApp模块单独创建一个项目,因为它依赖于下面的ProjectApp父其它模块。如果您没有将这些模块部署到您的Maven存储库,maven无法在存储库或构建反应器中找到它们。

相反,您应该为父母创建工作。这将构建必要的模块。

当您有一份ProjectApp的工作时,您也可以使用also-make-dependants选项,但我对此没有任何经验。

+0

感谢SpaceTrucker。按照您的建议,我已经为父母创建了这份工作。 – 2013-04-26 20:43:27

1

有同样的问题,SpaceTrucker答案帮助了我。

因此,我只需运行是这样的:

.../ProjectParent$ mvn -am -pl ProjectApp test