2012-05-28 3 views
3

Jenkins와 빌드 할 때마다 maven이 내 프로젝트의 종속성을 다운로드하려고 시도하는 것 같습니다. 몇 가지 문제가 있습니다. 첫 번째 문제는이 작업을 전혀해서는 안되며, 다른 문제는 올바른 Repo에서 다운로드하려고 시도하지 않는다는 것입니다. 즉, 모든 사람이 시간 초과 될 때까지 기다려야한다는 것입니다.Maven 어셈블리 플러그인 jenkins의 의존 관계 재 구현

mvn clean 패키지를 직접 실행할 수 있으며 모든 종속 항목이 로컬 .m2 저장소에 있으므로 ~ 4 초 만에 빌드됩니다. Jenkins는 로컬에 설치되어 있으며이 Maven Repo를 공유하므로 다른 방식으로 동작하는 이유를 알 수 없습니다. 젠킨스가 -B 플래그와 -f 플래그를 사용하여 maven 명령을 실행하고 패키지 대신 설치를 사용하고있는 것처럼 보입니다. 그러나 내가 직접 할 때도 몇 초 만에 Jenkins가 모든 시간 초과로 약 8 분이 걸리는 반면 그것은 기다려야한다.

Slick2d 및 lwjgl 라이브러리에 태그를 붙였습니다. 공개 메이븐 레포에 없기 때문에 그들과 관련이 있다고 생각하기 때문에 직접 repo를 pom에 추가해야합니다.

빌드가 완료되고 성공한다는 사실에 주목할 가치가 있습니다. 유일한 차이점은 Jenkins가 시간 제한에 8 분을 보내고 몇 초 만에 발생한다는 것입니다.

또한 원래 이것을 알아 내려고 할 때 수동으로 시도했을 때도 발생했습니다. Maven Natives Repository를 추가 한 후에이 작업을 중단했는데 같은 로컬 repo를 공유하면서 Jenkins가 여전히 시간을 들여야하는 이유를 알지 못합니다.

업데이트 : 무슨 일이 벌어지고 있는지 알아 내려고 시도한 후 그것이 내 pom에서 그 부분을 가져 가면 그것은 잘 작동하기 때문에 maven 어셈블리 플러그인과 관련된 것으로 좁혔습니다. 여기

내 치어 파일의 관련 부분입니다 :

<repositories> 
    <repository> 
     <id>slick</id> 
     <name>slick</name> 
     <url>http://slick.cokeandcode.com/mavenrepo</url> 
    </repository> 
    <repository> 
     <id>mavenNatives</id> 
     <name>Maven Natives Repository</name> 
     <url>http://mavennatives.googlecode.com/svn/repo</url> 
    </repository> 
    <repository> 
     <id>nolat.org</id> 
     <name>Nolat</name> 
     <url>https://raw.github.com/Talon876/repo/master/releases</url> 
    </repository> 
</repositories> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 
    <dependency> 
     <groupId>org.nolat</groupId> 
     <artifactId>toolkit</artifactId> 
     <version>1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.lwjgl.lwjgl</groupId> 
     <artifactId>lwjgl</artifactId> 
     <version>2.8.3</version> 
    </dependency> 
    <dependency> 
     <groupId>slick</groupId> 
     <artifactId>slick</artifactId> 
     <version>274</version> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     [...] 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <id>jar-with-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <configuration> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
         <archive> 
          <manifest> 
           <mainClass>${main}</mainClass> 
           <addClasspath>true</addClasspath> 
          </manifest> 
         </archive> 
         <appendAssemblyId>false</appendAssemblyId> 
        </configuration> 
       </execution> 
       <execution> 
        <id>dist</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
        <configuration> 
         <descriptors> 
          <descriptor>src/META-INF/dist.xml</descriptor> 
         </descriptors> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

을 그리고 여기 젠킨스 콘솔 (가 포기하고 계속하기 전에 잠시 앉아 어디에서 다운로드 라인의 각이다)의 관련 부분입니다 : 안정적인 메이븐를 얻을 수

[JENKINS] Recording test results 
mojoStarted org.apache.maven.plugins:maven-jar-plugin:2.3.2(default-jar) 
[INFO] 
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ Falldown --- 
mojoSucceeded org.apache.maven.plugins:maven-jar-plugin:2.3.2(default-jar) 
mojoStarted org.apache.maven.plugins:maven-assembly-plugin:2.3(jar-with-dependencies) 
[INFO] 
[INFO] --- maven-assembly-plugin:2.3:single (jar-with-dependencies) @ Falldown --- 
Downloading: http://slick.cokeandcode.com/mavenrepo/phys2d/phys2d/060408/phys2d- 060408.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/phys2d/phys2d/060408/phys2d-060408.pom 
Downloading:  https://raw.github.com/Talon876/repo/master/releases/phys2d/phys2d/060408/phys2d-060408.pom 
Downloading: http://repo.maven.apache.org/maven2/phys2d/phys2d/060408/phys2d-060408.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/org/lwjgl/lwjgl/2.1.0/lwjgl-2.1.0.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/org/lwjgl/lwjgl/2.1.0/lwjgl- 2.1.0.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/org/lwjgl/lwjgl/2.1.0/lwjgl-2.1.0.pom 
Downloading: http://repo.maven.apache.org/maven2/org/lwjgl/lwjgl/2.1.0/lwjgl-2.1.0.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/org/lwjgl/lwjgl-jinput/2.1.0/lwjgl-jinput-2.1.0.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/org/lwjgl/lwjgl- jinput/2.1.0/lwjgl-jinput-2.1.0.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/org/lwjgl/lwjgl- jinput/2.1.0/lwjgl-jinput-2.1.0.pom 
Downloading: http://repo.maven.apache.org/maven2/org/lwjgl/lwjgl-jinput/2.1.0/lwjgl-jinput-2.1.0.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/org/lwjgl/lwjgl-native/2.1.0/lwjgl-native-2.1.0.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/org/lwjgl/lwjgl-native/2.1.0/lwjgl-native-2.1.0.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/org/lwjgl/lwjgl-native/2.1.0/lwjgl-native-2.1.0.pom 
Downloading: http://repo.maven.apache.org/maven2/org/lwjgl/lwjgl-native/2.1.0/lwjgl-native-2.1.0.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/javax/jnlp/jnlp/1.2/jnlp-1.2.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/javax/jnlp/jnlp/1.2/jnlp-1.2.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/javax/jnlp/jnlp/1.2/jnlp-1.2.pom 
Downloading: http://repo.maven.apache.org/maven2/javax/jnlp/jnlp/1.2/jnlp-1.2.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/ibxm/ibxm/unknown/ibxm-unknown.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/ibxm/ibxm/unknown/ibxm-unknown.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/ibxm/ibxm/unknown/ibxm-unknown.pom 
Downloading: http://repo.maven.apache.org/maven2/ibxm/ibxm/unknown/ibxm-unknown.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/jcraft/jogg/0.0.7/jogg-0.0.7.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/jcraft/jogg/0.0.7/jogg-0.0.7.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/jcraft/jogg/0.0.7/jogg-0.0.7.pom 
Downloading: http://repo.maven.apache.org/maven2/jcraft/jogg/0.0.7/jogg-0.0.7.pom 
Downloading: http://slick.cokeandcode.com/mavenrepo/jcraft/jorbis/0.0.15/jorbis-0.0.15.pom 
Downloading: http://mavennatives.googlecode.com/svn/repo/jcraft/jorbis/0.0.15/jorbis-0.0.15.pom 
Downloading: https://raw.github.com/Talon876/repo/master/releases/jcraft/jorbis/0.0.15/jorbis-0.0.15.pom 
Downloading: http://repo.maven.apache.org/maven2/jcraft/jorbis/0.0.15/jorbis-0.0.15.pom 
[WARNING] Artifact: org.nolat:Falldown:jar:1.0-SNAPSHOT references the same file as the assembly destination file. Moving it to a temporary location for inclusion. 
[INFO] META-INF/ already added, skipping 
[INFO] META-INF/MANIFEST.MF already added, skipping 
[INFO] org/ already added, skipping 
...and so on 
+0

는 업데이트 모든 종속성을 강제하기 위해 젠킨스 구성에 대한 받는다는 매개 변수 필드에 -U을 시도 했습니까? –

+0

'빌드'아래의 '고급'버튼을 클릭하면 MAVEN_OPTS은 무엇이며 어떤 상자가 체크되어 있습니까? –

+0

유일한 것은 "실패한 각 모듈에 대해 전자 메일 보내기"입니다. 지금은 -U로 빌드를 시도하고 있지만 아직 오랜 시간이 걸립니다. 완성 될 때까지 기다렸다가 -U없이 다른 것을 만들고 결과와 함께 의견을 게시합니다. – Talon876

답변

1

첫 번째 단계 빌드는 Nexus 등 메이븐 저장소 관리자를 사용하는 것입니다.

  • 은 (당신이 유일한 개발자 인 경우 젠킨스처럼 로컬 넥서스를 설치할 수 있습니다)
  • Configure Maven to use a single Nexus group 메이븐 Repoitory 관리자를 설치합니다. Jenkins를 실행하기위한 전용 시스템 사용자가있는 경우 모든 사용자와 Jenkins 사용자에 대해이 작업을 수행해야합니다 (권장 방법). Nexus와 다른 Maven Repository Manager를 사용하는 경우 문서를 확인하십시오.
  • Maven Repository Manager에만 리포지토리를 정의하십시오. POM에 저장소 섹션이 없습니다!

이 작업을 완료하면 문제를 확인하고 문제가 있는지 알려주십시오.

0

maven 어셈블리 플러그인이 사물을 다운로드하려고 한 것 같아 어쨌든 내가 제외시키고 자하는 일부 파일을 제외시킬 수있는 maven shade 플러그인으로 교체했습니다. 이 솔루션이 필연적으로 최상의 솔루션인지는 모르겠지만 제 경우에는 작동합니다. 빌드 시간을 8 분에서 25 초로 줄였습니다.

이것은 어셈블리 플러그인의 jar-with-dependencies 부분을 제거한 후 내 pom에 추가 한 것입니다.

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>1.6</version> 
      <configuration> 
       <createDependencyReducedPom>false</createDependencyReducedPom> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>${main}</mainClass> 
          </transformer> 
         </transformers> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>*.dll</exclude> 
            <exclude>*.so</exclude> 
            <exclude>*.jnilib</exclude> 
           </excludes> 
          </filter> 
         </filters> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
관련 문제