当前位置: 首页 > 知识库问答 >
问题:

对maven使用不同版本的jar:一个用于JDK 8,另一个用于JDK 11

陈实
2023-03-14

我们正在用JDK11测试编译。在我们的pom中。xml,我们依赖于xml API:

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.4.01</version>
</dependency>

代码在JDK 8中编译得很好,但在JDK 11中会出现错误,因为xml API中的大多数类也在JDK 11中,并且会发生以下错误:包javax。xml。可以从多个模块访问解析器:未命名、java。xml

有没有办法进入pom。xml必须有条件地使用依赖项,如jdk11是否为。是否设置了编译属性?

共有1个答案

高英彦
2023-03-14

只有在检测到精确的jdk版本时,才能使用Maven概要文件添加特定的依赖项:

<profile>
    <id>Java 8</id>
    <activation>
        <jdk>1.8</jdk>
    </activation>
    <dependencies>
        <dependency>…</dependency>
    </dependencies>
</profile>

您还可以使用自定义属性来激活配置文件。有关更多详细信息,请参阅Maven指南:

https://maven.apache.org/guides/introduction/introduction-to-profiles.html

 类似资料:
  • 我正在使用maven 3.1.1,我有以下问题 我有一个主项目(pom.xml),它将被编译为WAR文件。它有两个模块。 模块1有以下内容(请注意工件的版本) 模块2有以下内容(请注意工件的版本) 因此,我的项目依赖于同一个库的两个版本。问题是库版本2与版本1不向后兼容。所以,我不能只包括版本2。 我正在考虑修改模块1以使用库版本2,但这需要大量时间。因此,我正在寻找一种方法来包含库的两个版本。

  • 我有两个版本的oracle,oracle Database 11g Enterprise Edition 11.2.0.1.0版本-生产版和oracle Database 11.g Enterprise Edition版本11.2-0.3.0版本-64位生产版 我有这个sql: 它适用于11.2.0.1.0,但在11.2.0.3.0上,我收到此错误: 我能做些什么来解决这个问题? 感谢。

  • 我有一个包含两个maven模块(moduleA和moduleB)的java项目,其中每个模块都希望访问同一库的不同版本(v1和v2)。moduleA使用moduleB作为依赖项。我创建moduleB主要是为了解决这个问题,同时也认为它将保持代码的良好组织。 我在moduleA的pom.xml中使用了maven shade插件,认为它将帮助我区分每个版本的类,但我仍然得到“NoSuchMethodE

  • Intellij IDEA用不良行为把我逼疯了: 我有一个(基于Gradle的)项目,有两个用Java编写的主要类,每个类都在自己的包中。 一个叫"HelloFX" 一个叫"ImageView示例" 两者都使用JavaFX,因此需要一些特殊的“运行配置”。 为了“HelloFX” 对于“ImageViewExample” 配置是相同的,在这两种情况下(这将是很好的,不必处理一个巴洛克式复杂的文本框

  • 问题内容: 我有一个Spring应用程序,我希望能够在配置之间进行切换,这取决于我是调试服务器还是服务器正在生产中。(配置的区别在于数据库位置。) 理想情况下,我想在启动时将命令行参数传递给我的Spring应用程序并设置应用程序配置。 我有两个单独的application.properties文件,一个带有生产值,另一个带有调试值。如何在两者之间切换? 问题答案: 您可以有3个属性文件,和。您可以

  • 问题内容: 我有一个项目,其中有两个使用sqlline的单独模块和另一个依赖jline的库(例如OtherLib)。但是在不同版本上。 Module1使用Sqlline取决于 jline 2.10 Module2使用OtherLib取决于 jline 0.9.94 并且这两个版本不兼容。因此,我设置了类路径,以便Module1首先在 $ HOME / lib / module1 文件夹中搜索,而M