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