2015-03-31 114 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

回答