Ich versuche, ein Maven-POM zu erstellen, das beim Erstellen des Projekts und Ausführen der Tests the correct version of alpn-boot zieht.Maven-Abhängigkeitsversion abhängig von JVM-Version
Das Ganze funktioniert, wenn ich die Eigenschaft von "außerhalb" beim Ausführen der Build (z. B. über mvn -Dalpn-boot.version=8.1.8.v20160420 test
oder als Umgebungsvariable) injizieren, aber nicht beim Interpolieren innerhalb des POM mit ${java.version}
.
Ich habe versucht, properties-maven-plugin mit diesem in der pom.xml
Datei (Snippet) mit den folgenden Einstellungen zu erreichen:
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/alpn-boot/jdk-${java.version}.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.mortbay.jetty.alpn</groupId>
<artifactId>alpn-boot</artifactId>
<version>${alpn-boot.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Inhalt eines der Eigenschaftsdateien:
$ cat alpn-boot/jdk-1.8.0_92.properties
alpn-boot.version=8.1.8.v20160420
im Grunde die gleichen Problem mit dem gmaven-plugin
:
Mit beiden Ansätzen ich folgende Fehlermeldung:
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] 'dependencies.dependency.version' for org.mortbay.jetty.alpn:alpn-boot:jar must be a valid version but is '${alpn-boot.version}'. @ org.example:my-project:[unknown-version], /path/to/pom.xml, line 132, column 22
@
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project org.example:my-project:1.0.0-rc3-SNAPSHOT (/path/to/pom.xml) has 1 error
[ERROR] 'dependencies.dependency.version' for org.mortbay.jetty.alpn:alpn-boot:jar must be a valid version but is '${alpn-boot.version}'. @ org.example:my-project:[unknown-version], /path/to/pom.xml, line 132, column 22
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
Was ist das große Thema um die Version in den Pom wörtlich zu schreiben? – khmarbaise
@khmarbaise Das Problem ist, dass die Build/Tests hängen und fehlschlagen, wenn die "falsche" Version der JVM verwendet wird. Leider habe ich eine andere Version der JVM auf meinem Entwicklungscomputer als zum Beispiel Travis CI und so habe ich die Wahl zwischen meinen Builds, die fehlschlagen oder auf Travis CI aufbauen, wenn ich die Version von "alpn-boot" fest codiere das POM. – joschi
Das hört sich nach einem Job für Maven Toolchains an ... und abgesehen davon, wenn Sie Ihre Hände mit einer anderen JVM bauen? (7/8?), Als du deinen Code überprüfen solltest. Außerdem ist irgendetwas von der jvm über Umgebung verfügbar. Und verwenden Sie unterschiedliche Abhängigkeit basierend auf JVM/JDK verwendet Sounds, die Sie benötigen [ein Profil, das durch JDK-Version aktiviert wird] (https://maven.apache.org/guides/introduction/introduction-to-profiles.html) .. – khmarbaise