Gleiche Maven Versions in Child Modulen

bueseb84

Mitglied
Hallo zusammen

ich habe ein Maven Project mit Modulen und Child Modulen.
Die Strutur sieht so in etwa aus :

Parent
|
|-- Child Module 1
|
| -- SubChildModule 1
|
|-- Child Module 2
|
| -- SubChildModule 2
|
|-- Child Module 3
|
| -- SubChildModule 3

Ich möchte nun in der parent pom eine Versionsnummer definieren, die ich in allen Child Modulen verwenden kann.
In jedem Child Module habe ich die parent pom eingetragen und in jedem SubChildModule habe ich das Child Module als Parent eingetragen.

In der Parent Pom habe ich das Property definiereniert :
parent pom :
Code:
<properties>
        <calendarVersion>1.3-SNAPSHOT</calendarVersion>
    </properties>

<groupId>volleyball</groupId>
<artifactId>calendar</artifactId>
<version>${calendarVersion}</version>

Auszug aus einer Child Pom :
Code:
    <!-- define the parent project -->
    <parent>
        <groupId>volleyball</groupId>
        <artifactId>calendar</artifactId>
        <version>${calendarVersion}</version>
    </parent>

    <artifactId>repository</artifactId>

    <dependencies>
        <!--internal dependencies -->
        <dependency>
            <groupId>volleyball</groupId>
            <artifactId>model</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

ich habe versucht mit dem Command :
mvn clean package -DcalendarVersion=1.4-SNAPSHOT
das Project zu bauen. Aber ich bekomme immer die Fehlermeldung :

[ERROR] The project volleyball:calendar:${project.version} (/home/sebastian/git/dev-volleyball/calendar/pom.xml) has 1 error
[ERROR] Non-resolvable parent POM for volleyball:calendar:${project.version}: Failure to find volleyball:volleyball:pom:${project.version} in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 8, column 13 -> [Help 2]

Kann mir jemand helfen
 

LimDul

Top Contributor
Das Problem ist ja auch - wenn du zwei Versione hast, eine calender version 1.3 wo in der Properties 1.3 stet und eine Version 1.4, wo dann als Property 1.4 steht - welche Parent Version soll er denn ziehen? Es wären ja beide gültig. Das was du machst ist eine zirkuläre Referenz, du definierst in der Parent POM die Versionsnummer. In der Child Pom willst auf diese Versionsnummer referenzieren um die Parent POM zu ermitteln - das heißt du musst die Parent-POM kenne um die Versionsnummer zu wissen - aber gleichzeitig brauchst du die Versionsnummer um die Parent Pom zu kennen.
 

bueseb84

Mitglied
Ja schon aber genau das gleich wird doch hier auch gemacht :

Es wird in der parent Pom eine Version definiert, die in der Child Pom verwendet wird. Also warum geht es dort ?

Oder anders gefragt gibt es einen eleganteren Weg, dass alle Module und Submodule die gleiche Version haben
 

httpdigest

Top Contributor
Ja schon aber genau das gleich wird doch hier auch gemacht :
Es wird in der parent Pom eine Version definiert, die in der Child Pom verwendet wird. Also warum geht es dort ?
Nein. Weder in der Frage noch in einer Antwort wird eine Property definiert, die dann in der parent.version in einem Child-Modul als Property verwendet wird. Vielleicht schickst du nochmal den Link zu der genauen Antwort, die das deiner Meinung nach tut.

Oder anders gefragt gibt es einen eleganteren Weg, dass alle Module und Submodule die gleiche Version haben
https://stackoverflow.com/questions...to-specify-the-parent-version#answer-51969067
 

bueseb84

Mitglied
Der Link ist schon richtig. Schau mal heir :

Code:
As Yanflea mentioned, there is a way to go around this.

In Maven 3.5.0 you can use the following way of transferring the version down from the parent project:
Parent POM.xml

<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mydomain</groupId>
    <artifactId>myprojectparent</artifactId>
    <packaging>pom</packaging>
    <version>${myversion}</version>
    <name>MyProjectParent</name>

    <properties>
        <myversion>0.1-SNAPSHOT</myversion>
    </properties>

    <modules>
        <module>modulefolder</module>
    </modules>
    ...
</project>

Module POM.xml

<project ...>
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.mydomain</groupId>
        <artifactId>myprojectmodule</artifactId>
        <version>${myversion}</version> <!-- This still needs to be set, but you can use properties from parent -->
    </parent>

    <groupId>se.car_o_liner</groupId>
    <artifactId>vinno</artifactId>
    <packaging>war</packaging>
    <name>Vinno</name>
    <!-- Note that there's no version specified; it's inherited from parent -->
    ...
 

httpdigest

Top Contributor
Hmm, also ich habe mal einen Test gemacht mit genau folgendem Setup:
Parent pom.xml:
XML:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>
  <properties>
    <revision>1.0.0-SNAPSHOT</revision>
  </properties>
  <modules>
    <module>module1</module>
  </modules>
</project>
Child pom.xml (module1/pom.xml):
XML:
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>test</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>
  <groupId>test</groupId>
  <artifactId>child</artifactId>
</project>
Das baut mit dem aktuellen Maven 3.6.3 wunderbar.
 

mrBrown

Super-Moderator
Mitarbeiter
Was willst du denn erreichen? Wenn du nur die Version einfach updaten können willst, kannst du auch einfach das Dependecy-Plugin nutzen.
 

bueseb84

Mitglied
Ich habe das Beispiel machgestellt und es auch hinbekommen. Wenn ich aber nun ein 2. Modul einfüge, welches aus dem erste referenziert wird bekomme ich folegden Fehler :

[ERROR] Failed to execute goal on project child2: Could not resolve dependencies for project test:child2:jar:1.0.0-SNAPSHOT: Could not find artifact test:child1:jar:1.0.0-SNAPSHOT -> [Help 1]
[ERROR]


Hier meine pom :

Code:
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>test</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>
  <groupId>test</groupId>
  <artifactId>child2</artifactId>

    <dependencies>
        <!--internal dependencies -->
        <dependency>
            <groupId>test</groupId>
           <artifactId>child1</artifactId>
<version>${project.version}</version>
        </dependency>
    </dependencies>
</project>
 

httpdigest

Top Contributor
Ich habe das Beispiel machgestellt und es auch hinbekommen. Wenn ich aber nun ein 2. Modul einfüge, welches aus dem erste referenziert wird bekomme ich folegden Fehler :
Auch das funktioniert bei mir problemlos. Hier nochmal alle pom.xml's:
Parent:
XML:
<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>parent</artifactId>
  <version>${revision}</version>
  <packaging>pom</packaging>
  <properties>
    <revision>1.0.0-SNAPSHOT</revision>
  </properties>
  <modules>
    <module>module1</module>
    <module>module2</module>
  </modules>
</project>
module1/pom.xml:
XML:
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>test</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>
  <groupId>test</groupId>
  <artifactId>child1</artifactId>
</project>
module2/pom.xml:
XML:
<project>
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>test</groupId>
    <artifactId>parent</artifactId>
    <version>${revision}</version>
  </parent>
  <groupId>test</groupId>
  <artifactId>child2</artifactId>
  <dependencies>
    <dependency>
      <groupId>test</groupId>
      <artifactId>child1</artifactId>
      <version>${revision}</version>
    </dependency>
  </dependencies>
</project>
Frage: Hast du das zweite Modul auch als module in dem Parent eingetragen?
 

mrBrown

Super-Moderator
Mitarbeiter
Alternativ setzt mvn versions:set -DnewVersion=X.Y.Z die Version für alle Module in einem Projekt, ohne das man in zig Modulen irgendwas händisch anpassen muss.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
parrot Gleiche Buchstaben Aufage Allgemeine Java-Themen 40
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
T Gleiche Operation dauert teilweise sehr lange Allgemeine Java-Themen 12
R Gleiche Objektreferenz trotz clone()? Allgemeine Java-Themen 12
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
M HashSet<String> das selbe oder das gleiche? Allgemeine Java-Themen 4
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4
M Die gleiche Klasse in mehreren JAR files Allgemeine Java-Themen 5
B Liste auf gleiche Elemente untersuchen? Allgemeine Java-Themen 2
V String formatiert ausgeben ( gleiche Anzahl von Ziffern ) Allgemeine Java-Themen 5
E ArrayList referenziert immer auf das gleiche Objekt Allgemeine Java-Themen 2
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
G Maven Projekt JAR-Datei Allgemeine Java-Themen 6
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
berserkerdq2 Kann jemand vereinfacht erklären was Maven ist? Allgemeine Java-Themen 8
G JavaFX Maven Projekt als .exe Datei exportieren Allgemeine Java-Themen 10
J maven Allgemeine Java-Themen 2
Kirby.exe JDBC Connector von Maven Repo importieren Allgemeine Java-Themen 1
G Maven link outdated Allgemeine Java-Themen 13
bueseb84 Fehler beim Import von Maven Dependencies aus lokalem artifactory Allgemeine Java-Themen 2
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
V Maven Maven ClassNotFoundException MySQL JDBC Treiber Allgemeine Java-Themen 1
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
HarleyDavidson NetBeans Jigsaw & Maven Allgemeine Java-Themen 3
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
R JDK installieren JDK / Maven auf Windows 10 installieren Allgemeine Java-Themen 9
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
O Maven - JUnit - H2 Allgemeine Java-Themen 1
M Maven Dependency aus Projekt nicht aus Repo Allgemeine Java-Themen 3
G maven 3.1.1 StackOverflowError Allgemeine Java-Themen 3
J libs mit maven in jar packen Allgemeine Java-Themen 2
M Maven Repo spiegeln Allgemeine Java-Themen 2
F Maven 3.0 Allgemeine Java-Themen 3
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
S [Maven] remote repository Allgemeine Java-Themen 5
S JOGL NoClassDefFoundError und Maven Allgemeine Java-Themen 4
B maven 2 error bei plugin download Allgemeine Java-Themen 7
H Ant oder Maven? Allgemeine Java-Themen 10
T (Versions) Probleme mit FileLock Allgemeine Java-Themen 4
R RXTX Versions Info abschalten Allgemeine Java-Themen 6
U Versions-Konfusion: Ist long kein object? Allgemeine Java-Themen 3
S versions-check Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben