2016-03-08 144 views
0

我已經使用最新版本的MAVEN。我必須使用MAVEN來創建我想要創建的項目。 我的第一個項目是一個基於模塊的項目,它有兩個模塊。這個項目的父POM由2個孩子POMS組成。我將通過命令提示將版本傳遞爲變量,以使此版本獨立於靜態版本。Maven最新版本更新失敗,使用mvn安裝命令

父POM樣子:

<modelVersion>4.0.0</modelVersion> 
<groupId>A.B.C</groupId> 
<artifactId>D</artifactId> 
<version>${major.version}.${build.version}</version> 
<packaging>pom</packaging> 

<!-- Some further code--> 

一個模塊有POM,如:

<parent> 
    <groupId>A.B.C</groupId> 
    <artifactId>D</artifactId> 
    <version>${major.version}.${build.version}</version> 
</parent> 

**<groupId>A.B.C</groupId> 
<artifactId>E</artifactId>** 
<version>${major.version}.${build.version}</version> 

<!-- Some further code--> 

第二個模塊有POM,如:

<parent> 
    <groupId>A.B.C</groupId> 
    <artifactId>F</artifactId> 
    <version>${major.version}.${build.version}</version> 
</parent> 

**<groupId>A.B.C</groupId> 
<artifactId>G</artifactId>** 
<version>${major.version}.${build.version}</version> 

<!-- Some further code--> 

我的第二個項目使用上面的依賴於它的POM,如:

<modelVersion>4.0.0</modelVersion> 
<groupId>A.B.C</groupId> 
<artifactId>T</artifactId> 
<version>0.0.1</version> 

<packaging>jar</packaging> 

<dependencies> 

    <dependency> 
     **<groupId>A.B.C</groupId> 
     <artifactId>E</artifactId> 
     <version>LATEST</version>** 
    </dependency> 

    <dependency> 
     **<groupId>A.B.C</groupId> 
     <artifactId>G</artifactId> 
     <version>LATEST</version>** 
    </dependency> 

但在使用MVN乾淨安裝,它提供了錯誤

[錯誤]未能就項目的執行目標ŧ :無法解析項目的依賴關係 由以下原因引起:org.eclipse.aether.resolution.ArtifactResolutionException:無法傳輸工件ABC:D:pom:$ {major.version}。$ {build.version} from/to nexus-all -repos:IllegalArgumentException

但是,如果我使用命令mvn版本:使用最新版本,它工作正常。我想使用mvn install,因爲我只想使用最新版本的一些依賴關係。

可能是什麼問題?

添加完整的錯誤堆棧

[ERROR] Failed to execute goal on project T: Could not resolve dependencies for project A.B.C:T:jar:5.6.0.15: Failed to collect dependencies at A.B.C:E:jar:LATEST: Failed to read artifact descriptor for A.B.C:E:jar:LATEST: Could not tran 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project T: Could not resolve dependencies for project A.B.C:T:jar:5.6.0.15: Failed to collect dependencies at A.B.C:E:jar:LATEST 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:220) 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:127) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:257) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:200) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
     at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:158) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project A.B.C:T:jar:5.6.0.15: Failed to collect dependencies at A.B.C:E:jar:LATEST 
     at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:167) 
     at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:195) 
     ... 22 more 
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at A.B.C:E:jar:LATEST 
     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:292) 
     at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:317) 
     at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:159) 
     ... 23 more 
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for A.B.C:E:jar:LATEST 
     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:384) 
     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:231) 
     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.process(DefaultDependencyCollector.java:461) 
     at org.eclipse.aether.internal.impl.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:261) 
     ... 25 more 
Caused by: org.apache.maven.model.resolution.UnresolvableModelException: Could not transfer artifact A.B.C:D:pom:${major.version}.${build.version} from/to nexus-all-repos (http://eqmavenrepo.technologic.com/nexus/content/groups/allrepo/): IllegalArgumentException 
     at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:170) 
     at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:219) 
     at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:898) 
     at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:750) 
     at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:309) 
     at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:375) 
     ... 28 more 
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact A.B.C:D:pom:${major.version}.${build.version} from/to nexus-all-repos (http://eqmavenrepo.technologic.com/nexus/content/groups/allrepo/): IllegalArgumentException 
     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459) 
     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262) 
     at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239) 
     at org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(DefaultModelResolver.java:166) 
     ... 33 more 
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact A.B.C:D:pom:${major.version}.${build.version} from/to nexus-all-repos (http://eqmavenrepo.technologic.com/nexus/content/groups/allrepo/): IllegalArgumentException 
     at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1016) 
     at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1004) 
     at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:725) 
     at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: java.lang.IllegalArgumentException 
     at java.net.URI.create(URI.java:842) 
     at org.apache.maven.wagon.providers.http.httpclient.client.methods.HttpGet.<init>(HttpGet.java:69) 
     at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:841) 
     at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116) 
     at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88) 
     at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) 
     at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:660) 
     ... 4 more 
Caused by: java.net.URISyntaxException: Illegal character in path at index 119: http://eqmavenrepo.technologic.com/nexus/content/groups/allrepo/A/B/C/D/${major.version}.${build.version}/D-${major.version}.${build.version}.pom 
     at java.net.URI$Parser.fail(URI.java:2809) 
     at java.net.URI$Parser.checkChars(URI.java:2982) 
     at java.net.URI$Parser.parseHierarchical(URI.java:3066) 
     at java.net.URI$Parser.parse(URI.java:3014) 
     at java.net.URI.<init>(URI.java:578) 
     at java.net.URI.create(URI.java:840) 
     ... 10 more 
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

仍然得到錯誤移除非法字符

回答

0

後,我想在路徑與錯誤的符號問題回購的Cuz這是堆棧跟蹤。嘗試檢查所有與nexus repo相關的路徑。

Caused by: java.net.URISyntaxException: Illegal character in path at index 119: ~^~content/groups/allrepo/~^~/E/${major.version}.${build.version}/E-${major.version}.${build.version}.pom 
1

這不是Maven的工作方式。不要將POM看作是一個簡單的構建腳本,而是更多的是作爲一個發貨單與您的工件一起發運,以解釋它如何與世界其他地方相連接,例如,在依賴關係方面和如何它是內置(注意過去式),而不是如何構建它,就像Ant。

的問題是,如果的Maven將允許你參數${major.version}.${build.version}並把它們作爲座標,當它安裝/部署它可能能夠做正確的事情,你的神器部署到http://.../E/X.Y/E-X.Y.pom(如果你使用mvn -Dmajor.version=X -Dbuild.version=Y ... )。

但後來出現問題。另一個用戶可能會正確下載你的工件,但是當Maven試圖解析POM時,它會遇到${major.version}.${build.version},並且不知道該怎麼做,因爲實際值是由你在部署時提供的,並在進程中丟失。

這就是爲什麼Maven座標需要固定並且不能外推屬性的原因;它給你(也許更重要的是,任何其他依賴)控制和可追溯性。當然,其他非座標屬性可能會參數化爲您的心臟內容,它只是對此更敏感的座標。

Maven的座標使用五個值,他們三個比其他更常見:groupIdartifactIdversion。另外兩個是packagingclassifier,但用於更多的外來使用情況。

如果您打算使用Maven,我建議您重新考慮您的建築方法。它有一個陡峭的學習曲線,但是從頂部看,這個視圖非常壯觀。使用Maven釋放工件最好通過例如Maven Release plugin完成。

相關問題