0

我们正在将 Java 应用程序从 JBoss EAP 6 迁移到 JBoss EAP 7.3。我们将 jboss BOM 文件更新为 Jakarta EE 8 版本:

        <dependency>
            <groupId>org.jboss.bom</groupId>
            <artifactId>jboss-eap-jakartaee8-with-tools</artifactId>
            <version>${version.jboss.bom}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

在构建我们的最终 EAR 文件时,maven 构建失败并出现以下错误:

Unable to initialize POM pom.xml: Invalid JDK version in profile 'compile-java8-release-flag': Unbounded range: [9, for project org.jboss:jboss-parent
        at org.apache.maven.artifact.ant.Pom.initialiseMavenProject(Pom.java:217)
        at org.apache.maven.artifact.ant.Pom.doExecute(Pom.java:418)
        at org.apache.maven.artifact.ant.AbstractArtifactTask.execute(AbstractArtifactTask.java:751)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: org.apache.maven.project.ProjectBuildingException: Invalid JDK version in profile 'compile-java8-release-flag': Unbounded range: [9, for project org.jboss:jboss-parent
        at org.apache.maven.project.DefaultMavenProjectBuilder.injectActiveProfiles(DefaultMavenProjectBuilder.java:1502)
        at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1194)
        at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1407)
        at org.apache.maven.project.DefaultMavenProjectBuilder.assembleLineage(DefaultMavenProjectBuilder.java:1407)
        at org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:823)
        at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromRepository(DefaultMavenProjectBuilder.java:255)
        at org.apache.maven.project.DefaultMavenProjectBuilder.mergeManagedDependencies(DefaultMavenProjectBuilder.java:1456)
        at org.apache.maven.project.DefaultMavenProjectBuilder.processProjectLogic(DefaultMavenProjectBuilder.java:999)
        at org.apache.maven.project.DefaultMavenProjectBuilder.buildInternal(DefaultMavenProjectBuilder.java:880)
        at org.apache.maven.project.DefaultMavenProjectBuilder.buildFromSourceFileInternal(DefaultMavenProjectBuilder.java:508)
        at org.apache.maven.project.DefaultMavenProjectBuilder.build(DefaultMavenProjectBuilder.java:200)
        at org.apache.maven.artifact.ant.Pom.initialiseMavenProject(Pom.java:211)
        ... 18 more
Caused by: org.apache.maven.profiles.activation.ProfileActivationException: Invalid JDK version in profile 'compile-java8-release-flag': Unbounded range: [9,
        at org.apache.maven.profiles.activation.JdkPrefixProfileActivator.isActive(JdkPrefixProfileActivator.java:57)
        at org.apache.maven.profiles.DefaultProfileManager.isActive(DefaultProfileManager.java:273)
        at org.apache.maven.profiles.DefaultProfileManager.getActiveProfiles(DefaultProfileManager.java:209)
        at org.apache.maven.project.DefaultMavenProjectBuilder.injectActiveProfiles(DefaultMavenProjectBuilder.java:1496)
        ... 29 more

我们发现我们包含的 bom 使用 org.jboss.jboss-parent 作为父级,它包含以下配置文件:

<profile>
  <id>compile-java8-release-flag</id>
  <activation>
    <file>
      <exists>${basedir}/build-release-8</exists>
    </file>
    <jdk>[9,</jdk>
  </activation>

<!-- ... -->
</profile>

在 jdk 标记中,版本从末尾缺少 ) 字符。有一个更新版本的 jboss-eap-jakartaee8-with-tools 仍然使用 jboss-parent:35 所以它会产生同样的错误。

没有关于这个话题的相关讨论。还有一个版本为 36 的 jboss-parent 修复了这个问题,但是它没有在任何 bom 中使用。在官方的 redhat maven 存储库增量更新和 eap 7.3 更新中都没有提到这个问题。

除了手动编辑本地 maven 存储库中的 jboss-parent 之外,如何解决此问题?有官方解决这个问题吗?

谢谢你。

4

2 回答 2

1

TL;DR 解释 ant 中被遗忘的插件对我们开了个玩笑。我们需要一起更新插件或蚂蚁。

更长的解释: 所以我们正在迁移的项目是旧的。它同时使用 Ant 1.9.1 和 Maven 3.0.5。事实证明,Ant 1.9.1 在 build.xml 中的某一时刻使用了 Maven Ant Task 插件,该插件在其插件 jar 中带有自己的 Maven 2.2.1。在迁移之前,构建自动化工具之间的一切工作正常。迁移后,在新依赖项中定义了一个版本范围,这对 Maven 3.x 来说很好,但 Maven 2.x 死了。我们错误地认为是 Maven 3.x 导致了问题,但不是。

于 2020-11-17T18:33:18.517 回答
0

您应该从 Maven Ant Tasks 迁移到Maven Artifact Resolver Ant Tasks。那应该解决“开放版本”问题,并且它也不会在 jar 中捆绑 maven。

它有一个代理存储库的错误。它让我们从一个问题进入另一个问题,就像这里描述的那样:/

于 2022-02-03T08:26:43.797 回答