2015-03-31 104 views
1

截至目前,我們用來檢查整個項目,並且始終編譯所有項目。Maven快照部署策略疑問

所以現在我們只想簽出我們想要修改的東西,所以爲了實現這個功能,我們實現了一個版本,以便輕鬆跟蹤修改發生的位置。

Let say we have project A 
    Project B 
    Project C 

如果我想修改項目C和我想只檢出項目C,但項目C對一個依賴和B.

A和B具有從關係下載。對於A和B上的每個修改,將工件部署到nexus中,C將從nexus中獲得這些更改。

因爲我是海鷗這個概念,任何一個可以讓我知道如何使這個可行的正確.. 問題

,因爲我觀察到的所有快照上的時間戳爲主,這依賴將最新下載或最老, 如果我想要舊的快照作爲依賴項,我必須做什麼? 任何最佳實踐建議?

添加錯誤代碼: -

使用-T 1.5C我收到此錯誤時:

java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238) 
at jenkins.maven3.agent.Maven32Main.launch(Maven32Main.java:181) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
at java.lang.reflect.Method.invoke(Method.java:611) 
at hudson.maven.Maven3Builder.call(Maven3Builder.java:136) 
at hudson.maven.Maven3Builder.call(Maven3Builder.java:71) 
at hudson.remoting.UserRequest.perform(UserRequest.java:121) 
at hudson.remoting.UserRequest.perform(UserRequest.java:49) 
at hudson.remoting.Request$2.run(Request.java:324) 
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314) 
at java.util.concurrent.FutureTask.run(FutureTask.java:149) 
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:906) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:929) 
at java.lang.Thread.run(Thread.java:738) 
Caused by: org.apache.maven.cli.MavenExecutionRequestsBuilderException: Must provide a thread count for -T 
at org.apache.maven.cli.DefaultMavenExecutionRequestBuilder.getMavenExecutionRequest(DefaultMavenExecutionRequestBuilder.java:192) 
at org.jvnet.hudson.maven3.launcher.Maven32Launcher.getMavenExecutionRequest(Maven32Launcher.java:153) 
at org.jvnet.hudson.maven3.launcher.Maven32Launcher.main(Maven32Launcher.java:130) 
... 22 more 
Caused by: java.lang.IllegalArgumentException: Must provide a thread count for -T 
at org.apache.maven.cli.DefaultMavenExecutionRequestBuilder.populateRequest(DefaultMavenExecutionRequestBuilder.java:982) 
at org.apache.maven.cli.DefaultMavenExecutionRequestBuilder.getMavenExecutionRequest(DefaultMavenExecutionRequestBuilder.java:172) 
... 24 more 
    ERROR: Failed to parse POMs 
    java.io.IOException: Remote call on Channel to Maven [/opt/ibm/java-x86_64-60/bin/java, -cp, /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-agent-1.6.jar:/opt/apache/apache-maven-3.2.5/boot/plexus-classworlds-2.5.2.jar:/opt/apache/apache-maven-3.2.5/conf/logging, jenkins.maven3.agent.Maven32Main, /opt/apache/apache-maven-3.2.5, /var/cache/jenkins/war/WEB-INF/lib/remoting-2.49.jar, /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven32-interceptor-1.6.jar, /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.6.jar, 45090] failed 
at hudson.remoting.Channel.call(Channel.java:756) 
at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:161) 
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:849) 
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:536) 
at hudson.model.Run.execute(Run.java:1718) 
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:531) 
at hudson.model.ResourceController.execute(ResourceController.java:89) 
at hudson.model.Executor.run(Executor.java:240) 
Caused by: java.lang.ClassNotFoundException: org.apache.maven.cli.MavenExecutionRequestsBuilderException 
at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430) 
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:383) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:274) 
at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:624) 
at hudson.remoting.MultiClassLoaderSerializer$Input.resolveClass(MultiClassLoaderSerializer.java:116) 
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1611) 
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1516) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349) 
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1914) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1797) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349) 
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1914) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1797) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349) 
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1914) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1797) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349) 
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1989) 
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1914) 
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1797) 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1349) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369) 
at hudson.remoting.UserRequest.deserialize(UserRequest.java:185) 
at hudson.remoting.UserResponse.retrieve(UserRequest.java:218) 
at hudson.remoting.Channel.call(Channel.java:752) 
... 7 more 
+0

你知道'mvn-pl project clean package'嗎? – khmarbaise 2015-03-31 07:14:32

+0

是的......對於我們的大項目,我們有6個項目,每個項目有60到80個模塊......並且每個都依賴於其他...並檢出所有代碼需要一些時間......所以這就是爲什麼減少結賬時間,我們去了上面提到的方式......這是好的做法嗎? – napp 2015-03-31 08:06:20

+0

你的建造時間是多少(5-10分鐘?)?有多少行代碼(由SonarQube測量)?有多少測試正在執行?您使用哪個Maven版本?你在使用最新的Maven插件嗎?你用'mvn -T3 ...'?我們在談論像詹金斯這樣的一體化集成解決方案嗎? – khmarbaise 2015-03-31 08:26:22

回答