Ich muss Projekte Client und Server maven. Die Version des Servers ist immer die Version des Clients. Diese "Version" ist nicht die Version des Maven-Artefakts des Clients. Ist eher eine Eigenschaft vom Client, dass ich es auf dem Server brauche. Es wird aus einer Eigenschaft des POM und der Build-Nummer oder dem "Trunk-Snapshot" erstellt (wenn der Client auf dem Entwicklercomputer erstellt wird).

Die Client-Version wird @build time erstellt (Jenkins Build oder lokale MVN-Neuinstallation). Ich muss die Client-Version auf dem Servermodul mit Java lesen.

Was wäre der beste Ansatz?

Ich habe versucht, eine Textdatei als Artefakt des Clients zu erstellen, konnte jedoch keine einfache Möglichkeit finden, sie auf dem Server zu lesen.

1
telebog 17 Jän. 2019 im 21:03

3 Antworten

Beste Antwort

Ich habe es mit dem Properties-Maven-Plugin im Client gelöst, um eine Eigenschaftendatei zu erstellen, die in client.jar endet. Ich habe es auf dem Server mit ClassLoader.getSystemResourceAsStream ("my.properties") gelesen.

0
telebog 19 Feb. 2019 im 15:56

Die einfachste Lösung wäre, eine Eigenschaft in Ihrer übergeordneten POM-Datei zu definieren und diese sowohl in Client- als auch in Servermodulen zu referenzieren.

pom.xml
server/pom.xml
client/pom.xml

Jetzt wird die übergeordnete pom.xml unten angezeigt.

<properties>
    <my.custom.version>1234</my.custom.version>
</properties>

In pom.xml-Dateien von Server und Client können Sie wie folgt darauf verweisen.

<version-needed-tag>${my.custom.version}</version-needed-tag>
4
lkamal 17 Jän. 2019 im 18:21

Lesen Sie die POM-Dokumentation hier: https: //maven.apache. org /guides / einführung / einführung in die pom.html. Sehen Sie sich insbesondere die Projektaggregation an: https: // maven. apache.org/guides/introduction/introduction-to-the-pom.html#Project_Aggregation

Was Sie wahrscheinlich wollen, ist ein übergeordnetes POM, das dann ein Modul für den Client und ein Modul für den Server hat.

Ihre Projektstruktur sieht folgendermaßen aus:

./pom.xml <-- this is your parent pom, it has version info, module entries for client/server, and dependencies that are used by both the client and server
./server
./server/pom.xml <- this is the pom for your server
./client
./client/pom.xml <- this is the pom for your client

Sie können dann die Version in Ihrem übergeordneten POM definieren und Ihr Client und Server erben sie. Um Ihre Build-Nummer zu definieren, können Sie eine Lösung verwenden, wie sie von lkamal vorgeschlagen wird, indem Sie Ihre Maven-Versionseigenschaft ändern.

Eine weitere zu berücksichtigende Option ist, wie Sie Ihre Build-Nummern generieren. Das Build Number Plugin für Maven kann entweder eine beliebige fortlaufende Build-Nummer generieren oder generieren Sie eine aus der SCM-Version.

2
Freiheit 17 Jän. 2019 im 18:32