Maven-Kompilierungskomplikation aufgrund komplexer Ordnerstruktur

Ich habe irgendwie komplexe Strukturen von Projekten, die ich über Maven aufbauen möchte. Ich verwende mein lokales Repository .m2/repository) also denk dran! Bevor ich auf das Problem eingehe, möchte ich zunächst die Struktur erläutern, die ich derzeit habe:

+- pom.xml
+- runtimeProject1
|  +- pom.xml
+- runtimeProject2
|  +- pom.xml
+- runtimeProject3
|  +- pom.xml
+- sharedProjects
|  +- pom.xml
|  +- sharedProject1
|  |  +- pom.xml
|  +- sharedProject2
|  |  +- pom.xml
|  +- sharedProject3
|     +- pom.xml
+- coreProjects 
   +- pom.xml
   +- coreProject1
   |  +- pom.xml
   +- coreProject2
   |  +- pom.xml
   +- coreProject3
      +- pom.xml

Zusammenfassend besteht mein Arbeitsbereich aus 2 Unterverzeichnissen, in denen sich Module befinden, die sich auf ihre eigenen Aufgaben beziehen, sowie aus Laufzeitprojekten, die @ verwenden sollecore undshared. projekte. Jedes Projekt hat einpom.xml Datei, und wie Sie sehen können, habe ich auchpom.xml für Eltern. Alles wird über das lokale Repository erledigt, denken Sie also daran.

etzt läuftmvn install unter den Verzeichnissen vonsharedProjects undcoreProjects separat funktioniert gut. Ich sehe die Erfolgsausgabe und sage, dass alles in Ordnung ist. Das Problem tritt auf, wenn ich den gleichen Befehl aus dem Stammordner, dem obersten Level @, ausführpom.xml. Ich stehe vor den Warnungen von:

[WARNING] Some problems were encountered while building the effective model for runtimeProjects:runtimeProject1:jar:1.0.0
[WARNING] 'dependencies.dependency.systemPath' for coreProject:com.google.protobuf:jar should not point at files within the project directory, ${project.basedir}/../coreProject/com.google.protobuf/protobuf-java-2.5.0.jar will be unresolvable by dependent projects @ line 31, column 22
[WARNING] 'dependencies.dependency.systemPath' for sharedProject:org.boofcv:jar should not point at files within the project directory, ${project.basedir}/../sharedProject/org.boofcv/GeoRegression.jar will be unresolvable by dependent projects @ line 43, column 22
[WARNING] 'dependencies.dependency.systemPath' for sharedProject:org.boofcv:jar should not point at files within the project directory, ${project.basedir}/../sharedProject/org.boofcv/BoofCV.jar will be unresolvable by dependent projects @ line 50, column 22
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: sharedProject:org.boofcv:jar -> duplicate declaration of version 1.0.,0.qualifier @ line 45, column 16
[WARNING] 'dependencies.dependency.systemPath' for sharedProject:javax.vecmath:jar should not point at files within the project directory, ${project.basedir}/../sharedProject/javax.vecmath/vecmath.jar will be unresolvable by dependent projects @ line 62, column 22

und dann Fehler sagen bestimmtepackage do not exist, was meiner Meinung nach auf diese Komplikation zurückzuführen ist.

Ich denke, ich muss eines der @ ändepom.xmls hier, aber weiß nicht, welche und wie.

Aktualisieren Ich habe beschlossen, die Art und Weise, wie ich einige der.jar -Dateien als Abhängigkeit, hier ist es also:

<dependency>
         <groupId>coreProjects</groupId>
         <artifactId>com.google.protobuf</artifactId>
         <version>2.5.0</version>
         <scope>system</scope>
         <systemPath>${project.basedir}/../coreProjects/com.google.protobuf/protobuf-java-2.5.0.jar</systemPath>
   </dependency>
    <dependency>
         <groupId>coreProjects</groupId>
         <artifactId>org.apache.felix</artifactId>
         <version>1.0.0</version>
         <scope>system</scope>
         <systemPath>${project.basedir}/../coreProjects/org.apache.felix/felix.jar</systemPath>
   </dependency>

Bitte beachten Sie, dass diese unter @ gut funktioniercoreProjects undsharedProjects Ordner. Nur nicht unterruntimeProject (s), daher meine Frage.

Update 2:

Okay, nach viel bekommen "nicht @ verwendsystemPath undsystem as scope "Warnungen von den Kommentatoren, ich habe meine Build-Strategie umstrukturiert und verwende jetzt keine systembezogenen Sachen. Das Problem besteht jedoch weiterhin. Jetzt gebe ich die Abhängigkeiten wie folgt an (da Sie keine pfadbezogenen Sachen sehen können) :

<dependency>
         <groupId>coreProjects</groupId>
         <artifactId>coreProject2</artifactId>
         <version>1.0.0.qualifier</version>
   </dependency>
   <dependency>
         <groupId>coreProjects</groupId>
         <artifactId>coreProject1</artifactId>
         <version>1.0.0.qualifier</version>
   </dependency>
   <dependency>
         <groupId>sharedProjects</groupId>
         <artifactId>org.boofcv</artifactId>
         <version>[1.0,)</version>
   </dependency>

So sind wir auf der sicheren Seite, ichglaube. Die obigen Warnungen sind verschwunden. Ab sofort bekomme ich einfachpackage does not exist Fehler. Es ist seltsam, weil die Pakete, über die es sich beschwert, im @ referenziert sinpom.xml Datei des Roots. Einer der Fehler ist beispielsweise der folgende:

package org.osgi.framework does not exist

Jedoch hat etwas anderes meine Aufmerksamkeit erregt. Der andere Fehler, den ich habe, gibt nicht direkt den Namen des Pakets an, sondern einen Teil dieses Pakets. Zum Beispiel, wenn der Paketname @ isomePackageName, der Fehler sagtsomePackageName.somePart does not exist. Es ist also nicht das gesamte Paket, sondern nur ein Teil davon, was mich noch verwirrender macht.

Was könnte der Grund dafür sein?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage