2012-11-21 34 views
11

Tôi đang làm theo hướng dẫn dành cho con quạ. Tôi có một dự án rất đơn giản với một vài mô-đun bên trong. Trên pom module tôi muốn tham khảo phiên bản pom proyect chính và nhóm thông qua $ {parent.groupid} và $ {parent.version} vì vậy nếu tôi thay đổi bất kỳ cái nào trong số đó, tôi sẽ không phải tìm kiếm trong poms con và thay đổi chúng nhưng tôi nhận được POM không phân giải được: Không thể chuyển lỗi giả tạo

Tôi đã đọc một số "POM mẹ không thể phân giải:" câu hỏi tại stackoverflow nhưng không có gì mà tôi đã đọc đã giúp.

cấu trúc thư mục của tôi là như sau:

tutorial_maven(dir) 
--> pom.xml(file) 
--> tutorial_maven_jar(dir) 
    --> pom.xml(file) 

tôi nhận được lỗi sau:

Apache Maven 3.0.4 (r1232337; 2012-01-17 03:44:56-0500) 
Maven home: C:\Program Files (x86)\apache-maven-3.0.4 
Java version: 1.7.0_09, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.7.0_09\jre 
Default locale: es_EC, platform encoding: UTF-8 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 
[INFO] Error stacktraces are turned on. 
[DEBUG] Reading global settings from C:\Program Files (x86)\apache-maven-3.0.4\conf\settings.xml 
[DEBUG] Reading user settings from C:\Users\fureta.DESARROLLO03\.m2\settings.xml 
[WARNING] Command line option -npr is deprecated and will be removed in future Maven versions. 
[DEBUG] Using local repository at C:\Users\fureta.DESARROLLO03\.m2\repository 
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for C:\Users\fureta.DESARROLLO03\.m2\repository 
[INFO] Scanning for projects... 
[DEBUG] Using connector WagonRepositoryConnector with priority 0 for http://repo.maven.apache.org/maven2 
Downloading: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tutorial_maven-${parent.version}.pom 
[DEBUG] Writing resolution tracking file C:\Users\fureta.DESARROLLO03\.m2\repository\${parent\groupId}\tutorial_maven\${parent.version}\tutorial_maven-${parent.version}.pom.lastUpdated 
[DEBUG] Extension realms for project org.felipe:tutorial_maven:pom:1.0-SNAPSHOT: (none) 
[DEBUG] Looking up lifecyle mappings for packaging pom from ClassRealm[plexus.core, parent: null] 
[DEBUG] Extension realms for project org.felipe:tutorial_maven_webapp:war:1.0-SNAPSHOT: (none) 
[DEBUG] Looking up lifecyle mappings for packaging war from ClassRealm[plexus.core, parent: null] 
[ERROR] The build could not read 1 project -> [Help 1] 
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs: 
[WARNING] 'parent.relativePath' points at org.felipe:tutorial_maven instead of ${parent.groupId}:tutorial_maven, please verify your project structure @ line 3, column 13 
[FATAL] Non-resolvable parent POM: Could not transfer artifact ${parent.groupId}:tutorial_maven:pom:${parent.version} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tutorial_maven-${parent.version}.pom and 'parent.relativePath' points at wrong local POM @ line 3, column 13 

at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:363) 
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:636) 
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:585) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:234) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
[ERROR] 
[ERROR] The project ${parent.groupId}:tutorial_maven_jar:${parent.version} (C:\Users\fureta.DESARROLLO03\IdeaProjects\tutorial_maven\tutorial_maven_jar\pom.xml) has 1 error 
[ERROR]  Non-resolvable parent POM: Could not transfer artifact ${parent.groupId}:tutorial_maven:pom:${parent.version} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tuto rial_maven-${parent.version}.pom and 'parent.relativePath' points at wrong local POM @ line 3, column 13 -> [Help 2] 
org.apache.maven.model.resolution.UnresolvableModelException: Could not transfer artifact ${parent.groupId}:tutorial_maven:pom:${parent.version} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tuto rial_maven-${parent.version}.pom 
at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:159) 
at org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:813) 
at org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:664) 
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:310) 
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:232) 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:410) 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:379) 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:495) 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:379) 
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:343) 
at org.apache.maven.DefaultMaven.collectProjects(DefaultMaven.java:636) 
at org.apache.maven.DefaultMaven.getProjectsForMavenReactor(DefaultMaven.java:585) 
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:234) 
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.sonatype.aether.resolution.ArtifactResolutionException: Could not transfer artifact ${parent.groupId}:tutorial_maven:pom:${parent.version} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tuto rial_maven-${parent.version}.pom 
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:538) 
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:216) 
at org.sonatype.aether.impl.internal.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:193) 
at org.sonatype.aether.impl.internal.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:286) 
at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:155) 
... 30 more 
Caused by: org.sonatype.aether.transfer.ArtifactTransferException: Could not transfer artifact ${parent.groupId}:tutorial_maven:pom:${parent.version} from/to central (http://repo.maven.apache.org/maven2): Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tutorial_maven-${parent.version}.pom 
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:951) 
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:941) 
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:669) 
at org.sonatype.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:60) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.IllegalArgumentException: Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tutorial_maven-${parent.version}.pom 
at java.net.URI.create(URI.java:859) 
at org.apache.maven.wagon.providers.http.httpclient.client.methods.HttpGet.<init>(HttpGet.java:69) 
at org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:778) 
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.sonatype.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:601) 
... 4 more 
Caused by: java.net.URISyntaxException: Illegal character in path at index 37: http://repo.maven.apache.org/maven2/${parent/groupId}/tutorial_maven/${parent.version}/tutorial_maven-${parent.version}.pom 
at java.net.URI$Parser.fail(URI.java:2829) 
at java.net.URI$Parser.checkChars(URI.java:3002) 
at java.net.URI$Parser.parseHierarchical(URI.java:3086) 
at java.net.URI$Parser.parse(URI.java:3034) 
at java.net.URI.<init>(URI.java:595) 
at java.net.URI.create(URI.java:857) 
... 10 more 
[ERROR] 
[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/ProjectBuildingException 
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException 

Tôi đã đọc qua các liên kết ở Help 1 và Trợ giúp 2 nhưng không tìm thấy gì đó giúp. Từ những gì tôi có thể hiểu từ nhật ký là maven đang tìm kiếm pom chính của tôi trong kho lưu trữ maven ...

Tôi đang thiếu gì?

pom.xml chính của tôi

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.felipe</groupId> 
    <artifactId>tutorial_maven</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <modules> 
     <module>tutorial_maven_jar</module> 
     <module>tutorial_maven_webapp</module> 
    </modules> 
    <packaging>pom</packaging> 

    <name>tutorial_maven</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <!--<log4j.version>1.2.17</log4j.version>--> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    </dependencies> 
</project> 

mô-đun pom.xml của tôi:

<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/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>tutorial_maven</artifactId> 
     <groupId>${parent.groupId}</groupId> 
     <version>${parent.version}</version> 
     <relativePath>../pom.xml</relativePath> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>tutorial_maven_jar</artifactId> 
    <packaging>jar</packaging> 

    <name>tutorial_maven_jar</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
      <!--<optional>true</optional>--> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
    </dependencies> 
</project> 

Trân trọng, Felipe

Trả lời

5

Dường như bạn đang cố gắng để cả hai thừa hưởng groupId từ cha mẹ và đồng thời chỉ định cha mẹ bằng cách sử dụng groupId được kế thừa!

Trong pom đứa trẻ, sử dụng một cái gì đó như thế này:

<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>org.felipe</groupId> 
    <artifactId>tutorial_maven</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <relativePath>../pom.xml</relativePath> 
</parent> 

<artifactId>tutorial_maven_jar</artifactId> 

Sử dụng các thuộc tính như ${project.groupId} sẽ không làm việc đó. Nếu bạn chỉ định cha mẹ theo cách này, thì bạn có thể kế thừa groupId và phiên bản trong pom con. Do đó, bạn chỉ cần chỉ định artifactId trong pom con.

+0

Xin chào Martin, đó là cách tôi ban đầu đã có nó và tôi đã làm theo hướng dẫn này, có thể tôi đã hiểu nhầm hướng dẫn này. Từ những gì tôi nhìn thấy, nếu tôi thay đổi phiên bản trong pom cha mẹ sau đó tôi phải thay đổi phiên bản de trên poms con bằng tay? – Felipe

+1

Có, nhưng bạn có thể sử dụng plugin phiên bản để tự động hóa điều đó, do đó bạn không phải chỉnh sửa từng phần một bằng tay. Nếu bạn chạy 'mvn versions: set -DnewVersion = x.y.z' từ pom cấp cao nhất, sau đó nó sẽ thiết lập phiên bản này trên pom cấp cao nhất trên tất cả các mô đun phụ. Để biết thêm thông tin, hãy xem: http://mojo.codehaus.org/versions-maven-plugin/set-mojo.html –

+0

tuyệt vời, cảm ơn bạn rất nhiều @ Martin Ellis. – Felipe

2

Tôi gặp vấn đề tương tự. Đã sửa lỗi bằng cách thêm tệp pom.xml trong thư mục mẹ có <modules> được liệt kê.

2

Tôi cho rằng câu hỏi đã được trả lời. Nếu giải pháp trên không giúp giải quyết vấn đề thì có thể sử dụng bên dưới để giải quyết vấn đề.

Sự cố xảy ra nếu đôi khi cài đặt người dùng maven của bạn không phản ánh đúng tệp settings.xml.

Để cập nhật tệp cài đặt, hãy chuyển đến Windows> Tùy chọn> Maven> Cài đặt người dùng và cập nhật tệp settings.xml thành vị trí chính xác.

Một khi điều này là doen xây dựng lại dự án, chúng sẽ giải quyết vấn đề. Cảm ơn.

Các vấn đề liên quan