Maven 3.0+ enforces that downloaded artifacts were resolved from a repository url/id that matches an url available for the current session.
Your log shows that the only repository url/id available to your session is [central (http://repo.maven.apache.org/maven2, releases)] i.e. you are using the default Maven settings and the pom your are building does not declare any <repositories> As the file is not available on central, Maven will (correctly in my opinion) fail the build as the build would be non-reproducible. This is one of those cases where the project you are building did not pay heed to the blog post I wrote on how to handle non-maven jars: http://developer-blog.cloudbees.com/2013/03/playing-trade-offs-with-maven.html They thought they had a hack that would work... they are sadly wrong. IIRC there is a CLI option that you can enabled in Maven 3.1.1 that tells Maven "I know what I am doing and don't make that check this time" i.e. --legacy-local-repository If you have any influence on the project you are trying to build I would recommend asking them to pay heed to my blog post as their hack is not good for users. HTH On 29 November 2013 13:17, Malte Skoruppa <[email protected]>wrote: > Hey guys, > > I want to build a project that I downloaded (https://sourcecode.valg.no/ > websvn/listing.php?repname=Internettstemmegivning) and that is supposed > to work fine. > > Yet I cannot build even the first module, because Maven tells me it cannot > find the parent POM. The parent POM is there in the local repo, at the > correct location, yet somehow Maven refuses to see it and tries to fetch it > remotely, which clearly will not work. This parent POM is a general POM of > packaging type "pom" that defines some plugin versions to be used etc. > > Put simply: > * I extracted the m2repository.tar (from the above URL) to > /home/malte/.repository > * I extracted the module "cryptography-2.0.0" from code.tar (from the > above URL) to /home/malte/cryptography-2.0.0 > > Now, in /home/malte/cryptography-2.0.0/pom.xml there is the section: > > <parent> > <groupId>com.scytl</groupId> > <artifactId>maven-generic-conf</artifactId> > <version>1.1.39</version> > </parent> > > The corresponding parent POM *does exist* in the local repo: > $ ls ~/.repository/com/scytl/maven-generic-conf/1.1.39/maven- > generic-conf-1.1.39.pom > /home/malte/.repository/com/scytl/maven-generic-conf/1.1. > 39/maven-generic-conf-1.1.39.pom > $ > > Yet when I try to validate the module cryptography-2.0.0: > > [~/cryptography-2.0.0] $ mvn validate -X -U -Dmaven.repo.local=/home/ > malte/.repository > Apache Maven 3.0.4 > ...snip... > [INFO] Error stacktraces are turned on. > [DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml > [DEBUG] Reading user settings from /home/malte/.m2/settings.xml > [DEBUG] Using local repository at /home/malte/.repository > [DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for > /home/malte/.repository > [INFO] Scanning for projects... > [DEBUG] Verifying availability of /home/malte/.repository/com/ > scytl/maven-generic-conf/1.1.39/maven-generic-conf-1.1.39.pom from > [central (http://repo.maven.apache.org/maven2, releases)] > [DEBUG] Using connector WagonRepositoryConnector with priority 0 for > http://repo.maven.apache.org/maven2 > Downloading: http://repo.maven.apache.org/maven2/com/scytl/maven- > generic-conf/1.1.39/maven-generic-conf-1.1.39.pom > [DEBUG] Writing resolution tracking file /home/malte/.repository/com/ > scytl/maven-generic-conf/1.1.39/maven-generic-conf-1.1.39.pom.lastUpdated > [ERROR] The build could not read 1 project -> [Help 1] > org.apache.maven.project.ProjectBuildingException: Some problems were > encountered while processing the POMs: > [FATAL] Non-resolvable parent POM: Could not find artifact > com.scytl:maven-generic-conf:pom:1.1.39 in central ( > http://repo.maven.apache.org/maven2) and 'parent.relativePath' points at > wrong local POM @ line 3, column 13 > > at org.apache.maven.project.DefaultProjectBuilder.build( > DefaultProjectBuilder.java:363) > ...snip... > [ERROR] The project com.scytl.jbasis:cryptography:2.0.0 > (/home/malte/cryptography-2.0.0/pom.xml) has 1 error > [ERROR] Non-resolvable parent POM: Could not find artifact > com.scytl:maven-generic-conf:pom:1.1.39 in central ( > http://repo.maven.apache.org/maven2) and 'parent.relativePath' points at > wrong local POM @ line 3, column 13 -> [Help 2] > org.apache.maven.model.resolution.UnresolvableModelException: Could not > find artifact com.scytl:maven-generic-conf:pom:1.1.39 in central ( > http://repo.maven.apache.org/maven2) > ...snip... > Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could > not find artifact com.scytl:maven-generic-conf:pom:1.1.39 in central ( > http://repo.maven.apache.org/maven2) > ...snip... > [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ > ProjectBuildingException > [ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/ > UnresolvableModelException > > As you can see Maven tries to fetch com.scytl:maven-generic-conf:pom:1.1.39 > from central, which clearly does not work. > > What bugs me in particular is this line: > [DEBUG] Verifying availability of /home/malte/.repository/com/ > scytl/maven-generic-conf/1.1.39/maven-generic-conf-1.1.39.pom from > [central (http://repo.maven.apache.org/maven2, releases)] > > Why? WHY? I mean, the file /home/malte/.repository/com/ > scytl/maven-generic-conf/1.1.39/maven-generic-conf-1.1.39.pom is THERE. > It's fine. Why does Maven want to download it from central repo? Why won't > it just read it? > > Also, if I actually put maven-generic-conf-1.1.39.pom in the parent > directory and rename it to pom.xml, the build works fine: > > [~] $ mkdir maven-generic-conf > [~] $ cp > ~/.repository/com/scytl/maven-generic-conf/1.1.39/maven-generic-conf-1.1.39.pom > maven-generic-conf/pom.xml > [~] $ cp -r cryptography-2.0.0/ maven-generic-conf/ > [~] $ cd maven-generic-conf/cryptography-2.0.0/ > [~/maven-generic-conf/cryptography-2.0.0] $ mvn validate -X -U > -Dmaven.repo.local=/home/malte/.repository > ...snip... > [INFO] ------------------------------------------------------------ > ------------ > [INFO] BUILD SUCCESS > [INFO] ------------------------------------------------------------ > ------------ > [INFO] Total time: 3.173s > [INFO] Finished at: Fri Nov 29 13:46:21 CET 2013 > [INFO] Final Memory: 9M/211M > [INFO] ------------------------------------------------------------ > ------------ > > While this is a workaround, it is not a solution. The project is quite > large and complex, and I cannot just rebuild the entire project structure. > (There are more very similar problems.) Also, different version of > maven-generic-conf are used by different modules, etc. > > Yes, I did visit both URLs at [Help 1] and [Help 2], and read them > carefully. It is true that a <relativePath> is not set in the child module > (i.e., cryptography-2.0.0), but in an entirely different project of mine > the <relativePath> is not set either and its parent POM is also only in the > local repo, yet that one validates fine. Also as can be seen from the > [DEBUG] line stated above, Maven does know the correct location of the > parent POM, apparently it just doesn't read it. > I googled for similar problems. But I could not find a solution. > > I also tried to use the -o switch to make the build offline and force > Maven to not download anything. But the error I get then is quite similar: > [FATAL] Non-resolvable parent POM: The repository system is offline but > the artifact com.scytl:maven-generic-conf:pom:1.1.39 is not available in > the local repository. and 'parent.relativePath' points at wrong local POM @ > line 3, column 13 > > Does anyone have an idea of what may be going on here? Any help would be > GREATLY appreciated. I'm out of ideas here. It may be something very > simple, and I just miss experience with Maven :) > > Many thanks, > > Malte > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
