2012-11-21 14 views
11

Sto seguendo un tutorial per Maven. Ho un progetto molto semplice con un paio di moduli all'interno. Sul modulo pom voglio fare riferimento alla versione principale di proyect pom e raggruppare attraverso $ {parent.groupid} e $ {parent.version} quindi se cambio uno di quelli non dovrò cercare il down nei poms dei bambini e cambiarli ma sto ricevendo il genitore non risolvibile POM: Impossibile trasferire l'errore degli artefatti

Ho letto diversi "POM genitore non risolvibile:" domande qui su StackOverflow ma nulla di ciò che ho letto ha aiutato.

La mia struttura di directory è la seguente:

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

sto ottenendo il seguente errore:

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 

ho letto attraverso i link a Help 1 e contribuire a 2 ma ha trovato nulla che aiuta. Da quello che posso capire dai log è che Maven sta cercando il mio pom principale nei repository di Maven ...

Cosa mi manca?

mio pom.xml principale

<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> 

mio modulo pom.xml:

<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> 

Con i migliori saluti, Felipe

risposta

5

sembra che si sta cercando di entrambi ereditano il groupId dal genitore e simultaneamente specificare il genitore usando un groupId ereditato!

Nel pom bambino, usare qualcosa di simile a questo:

<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> 

Uso immobili come ${project.groupId} non lavorare lì. Se si specifica il genitore in questo modo, è possibile ereditare il groupId e la versione nel child pom. Quindi, è sufficiente specificare l'artefatto nel pom del bambino.

+0

Ciao Martin, è così che l'ho avuto in origine e stavo seguendo il tutorial, forse mi manca il tutorial. Da quello che vedo, se cambio la versione nel genitore padre, devo cambiare manualmente la versione dei poms del bambino? – Felipe

+1

Sì, ma è possibile utilizzare il plug-in delle versioni per automatizzarlo, quindi non è necessario modificarlo manualmente. Se esegui 'mvn versions: set -DnewVersion = x.y.z' dal pom di livello superiore, allora imposterà questa versione sul pom di primo livello su tutti i sottomoduli. Per maggiori informazioni vedi: http://mojo.codehaus.org/versions-maven-plugin/set-mojo.html –

+0

ottimo, grazie mille @ Martin Ellis. – Felipe

2

Ho avuto lo stesso problema. Risolto aggiungendo un pom.xml nella cartella genitore con <modules> elencato.

2

Suppongo che la domanda abbia già una risposta. Se la soluzione precedente non aiuta a risolvere il problema, puoi utilizzare di seguito per risolvere il problema.

Il problema si verifica se a volte le impostazioni utente dell'utente non riflettono il file settings.xml corretto.

Per aggiornare il file delle impostazioni, accedere a Windows> Preferenze> Maven> Impostazioni utente e aggiornare il file settings.xml nella posizione corretta.

Una volta eseguita la ricostruzione, il progetto dovrebbe risolvere il problema. Grazie.

Problemi correlati