带有 jdk17 的 Maven 反应器中的传递依赖
Transitive dependency in a maven reactor with jdk17
我正在将大型应用程序升级到 JDK17。
今天,该项目使用 JDK11 和 maven 编译得很好。
对于 JDK17,我在传递依赖项的版本方面遇到了一个非常奇怪的问题。
本项目由多个子模块组成。如果我直接编译一个模块,它工作正常。
但是,如果我编译根模块或任何包含子模块的模块,传递依赖项的解析将不起作用。我有如下错误:
[INFO] -------------------------------[ bundle ]-------------------------------
Downloading from internal-repository: http://srv:8080/nexus/content/groups/public/org/apache/camel/camel-netty4/$%7Bproject.version%7D/camel-netty4-$%7Bproject.version%7D.pom
[WARNING] The POM for org.apache.camel:camel-netty4:jar:${project.version} is missing, no dependency information available
Downloading from internal-repository: http://srv:8080/nexus/content/groups/public/org/apache/camel/camel-netty4/$%7Bproject.version%7D/camel-netty4-$%7Bproject.version%7D.jar
依赖的版本是${project.version}
而不是真实版本。该项目不直接使用 camel-netty4
而是 camel-syslog
:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-syslog</artifactId>
<version>${camel.version}</version>
</dependency>
这只是一个例子,其他项目因其他传递依赖项而失败。如果我直接编译子模块,它就可以工作。
行家 3.6.3
我使用的是“Eclipse Adoptium - Temurin-17+35”
通过切换到官方 OpenJDK,我无法重现此问题。
这 JDK 在我的情况下不起作用,存在关于插值问题的随机错误
IMPLEMENTOR="Eclipse Adoptium"
IMPLEMENTOR_VERSION="Temurin-17+35"
JAVA_VERSION="17"
JAVA_VERSION_DATE="2021-09-14"
FULL_VERSION="17+35"
SEMANTIC_VERSION="17+35"
BUILD_INFO="OS: Windows Server 2012 R2 Version: 6.3"
JVM_VARIANT="Hotspot"
JVM_VERSION="17+35"
IMAGE_TYPE="JDK"
这个每次都有效:
IMPLEMENTOR="Oracle Corporation"
JAVA_VERSION="17.0.1"
JAVA_VERSION_DATE="2021-10-19"
LIBC="default"
MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.crypto.mscapi jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.foreign jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom jdk.zipfs"
OS_ARCH="x86_64"
OS_NAME="Windows"
SOURCE=".:git:75240a5872a1"
我正在将大型应用程序升级到 JDK17。 今天,该项目使用 JDK11 和 maven 编译得很好。
对于 JDK17,我在传递依赖项的版本方面遇到了一个非常奇怪的问题。
本项目由多个子模块组成。如果我直接编译一个模块,它工作正常。
但是,如果我编译根模块或任何包含子模块的模块,传递依赖项的解析将不起作用。我有如下错误:
[INFO] -------------------------------[ bundle ]-------------------------------
Downloading from internal-repository: http://srv:8080/nexus/content/groups/public/org/apache/camel/camel-netty4/$%7Bproject.version%7D/camel-netty4-$%7Bproject.version%7D.pom
[WARNING] The POM for org.apache.camel:camel-netty4:jar:${project.version} is missing, no dependency information available
Downloading from internal-repository: http://srv:8080/nexus/content/groups/public/org/apache/camel/camel-netty4/$%7Bproject.version%7D/camel-netty4-$%7Bproject.version%7D.jar
依赖的版本是${project.version}
而不是真实版本。该项目不直接使用 camel-netty4
而是 camel-syslog
:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-syslog</artifactId>
<version>${camel.version}</version>
</dependency>
这只是一个例子,其他项目因其他传递依赖项而失败。如果我直接编译子模块,它就可以工作。
行家 3.6.3
我使用的是“Eclipse Adoptium - Temurin-17+35” 通过切换到官方 OpenJDK,我无法重现此问题。
这 JDK 在我的情况下不起作用,存在关于插值问题的随机错误
IMPLEMENTOR="Eclipse Adoptium"
IMPLEMENTOR_VERSION="Temurin-17+35"
JAVA_VERSION="17"
JAVA_VERSION_DATE="2021-09-14"
FULL_VERSION="17+35"
SEMANTIC_VERSION="17+35"
BUILD_INFO="OS: Windows Server 2012 R2 Version: 6.3"
JVM_VARIANT="Hotspot"
JVM_VERSION="17+35"
IMAGE_TYPE="JDK"
这个每次都有效:
IMPLEMENTOR="Oracle Corporation"
JAVA_VERSION="17.0.1"
JAVA_VERSION_DATE="2021-10-19"
LIBC="default"
MODULES="java.base java.compiler java.datatransfer java.xml java.prefs java.desktop java.instrument java.logging java.management java.security.sasl java.naming java.rmi java.management.rmi java.net.http java.scripting java.security.jgss java.transaction.xa java.sql java.sql.rowset java.xml.crypto java.se java.smartcardio jdk.accessibility jdk.internal.jvmstat jdk.attach jdk.charsets jdk.compiler jdk.crypto.ec jdk.crypto.cryptoki jdk.crypto.mscapi jdk.dynalink jdk.internal.ed jdk.editpad jdk.hotspot.agent jdk.httpserver jdk.incubator.foreign jdk.incubator.vector jdk.internal.le jdk.internal.opt jdk.internal.vm.ci jdk.internal.vm.compiler jdk.internal.vm.compiler.management jdk.jartool jdk.javadoc jdk.jcmd jdk.management jdk.management.agent jdk.jconsole jdk.jdeps jdk.jdwp.agent jdk.jdi jdk.jfr jdk.jlink jdk.jpackage jdk.jshell jdk.jsobject jdk.jstatd jdk.localedata jdk.management.jfr jdk.naming.dns jdk.naming.rmi jdk.net jdk.nio.mapmode jdk.random jdk.sctp jdk.security.auth jdk.security.jgss jdk.unsupported jdk.unsupported.desktop jdk.xml.dom jdk.zipfs"
OS_ARCH="x86_64"
OS_NAME="Windows"
SOURCE=".:git:75240a5872a1"