2013-10-24 2 views
2

Jenkins (버전 1.534)에서 빌드 할 다중 모듈 Maven 프로젝트를 설정해야합니다.다중 모듈 Maven 프로젝트를 Jenkins에 넣기

/home/git/ProjectDomain.git 
/home/git/ProjectWAR.git 

로컬 난 내 자신의 부모의 pom.xml 구축 한 및 하위 폴더에 각 프로젝트가 :

<modules> 
    <module>ProjectSupport</module> 
    <module>ProjectWAR</module> 
</modules> 

이 작품을 각 모듈은 서로 완전히 분리, 자신의 Git 저장소에 로컬하지만 젠킨스에서 작동하도록 할 수는 없으며이를 수행하는 방법을 보여줄 온라인 설명서가없는 것 같습니다. 누구든지 이것에 대한 좋은 참조가 있습니까?

편집 : 내가 사용하려고 현재 부모 치어는/ProjectWAR 폴더에 있으며, 다음과 같습니다

<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.company.project</groupId> 
    <artifactId>Project</artifactId> 
    <packaging>pom</packaging> 
    <name>Project</name> 
    <version>1.0</version> 

    <modules> 
     <module>../ProjectDomain</module> 
     <module>../ProjectWAR</module> 
    </modules> 
</project> 

다시 한번 로컬로 작동하지만,하지 젠킨스에. 나는 현재 점점 오전 오류는 이것이다 :

[FATAL] Non-readable POM /var/lib/jenkins/jobs/Project - Integration/workspace/../ProjectDomain/pom.xml: /var/lib/jenkins/jobs/Project - Integration/workspace/../ProjectDomain/pom.xml (No such file or directory) @ 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:364) 
at hudson.maven.MavenEmbedder.buildProjects(MavenEmbedder.java:361) 
at hudson.maven.MavenEmbedder.readProjects(MavenEmbedder.java:331) 

그래서 어떻게 든, 나는 ProjectDomain의 REPO가 어디 있는지를 알려줄 필요가 있지만, 내가 어떻게이 일을 아무 생각이 없습니다.

+0

먼저 다중 모듈 빌드인지 여부를 고려 했습니까? 그들이 별개의 소스 제어 위치에 살고 있다면 아마도 더 나은 관계는 단순히 의존성 일뿐입니다. – chad

+0

@chad - 현재 조사 중입니다. 우리의 소스 제어 및 빌드 프로세스는 실제 쥐의 둥지이며이를 설정하는 사람들은 더 이상 여기에 없거나 그것에 관한 질문에 답하는 것에 지쳐 있습니다. 그래서 많은 것들이 내게 신비입니다.:) – user1071914

+0

다중 모듈 빌드의 아이디어는 동일한 버전을 가지고 있으며 동시에 릴리스됩니다. 이것은 다른 모듈의 트리가 동일한 자식 저장소에 있어야 함을 의미합니다. – khmarbaise

답변

2

같은 멀티 모듈 프로젝트의 구조는 다음과 같아야합니다

pom.xml (parent) 
    +--- module-1 (pom.xml) 
    +--- module-2 (pom.xml) 

부모는 자식 저장소의 루트 될 것입니다. 이것은 그러한 프로젝트 (이클립스 또는 다른 IDE)로 작업하고 젠킨스 (Jenkins)에게 당신의 삶을 간소화시킵니다.

+0

올바른 방법입니다. 이것은 약간의 리팩터링을 필요로 할 것이지만 나는 그것이 그것의 가치가 있다고 생각한다. – user1071914

+0

노력할 가치가 있습니다. – khmarbaise

0

jenkins git plugin이 동일한 옵션을 제공하는지는 모르겠지만 svn을 통해 Maven-Modules을 부모로부터 분리하여 유지할 수 있습니다. 그런

parent 
module-1 
module-2 

과의 pom.xml :

<jenkins_home>/jobs/<parent-jobname>/workspace/ 

:

<modules> 
    <module>../module-1</module> 
    <module>../module-2</module> 
</modules> 

문제는 젠킨스가의 작업에 대해 다음 경로를 사용한다는 것입니다

이 구조를 Meening 그래서 maven이 모듈을 찾습니다.

<jenkins_home>/jobs/<parent-jobname><module-name> 

작업 svn- 구성에서 완전히 독립적 인 repo-path를 사용하여 체크 아웃 할 추가 모듈을 정의 할 수 있습니다. 또한 부모에 대한 로컬 하위 폴더와 부모 pom의 modules-section에 사용 된 폴더를 처리하는 각 모듈에 대한 로컬 하위 폴더를 정의해야합니다. 따라서 다음과 같은 구조를 얻을 수 있습니다 :

<jenkins_home>/jobs/<parent-jobname>/workspace/<parent-name>/pom.xml 
<jenkins_home>/jobs/<parent-jobname>/workspace/module-1/pom.xml 
<jenkins_home>/jobs/<parent-jobname>/workspace/module-2/pom.xml 

그리고 Maven이 기대하는 것.

관련 문제