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

Reply via email to