配置文件“compile-java8-release-flag”中的jdk版本无效:无限范围:[9,对于项目组织jboss:jboss-parent

e0bqpujr  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(606)

我们正在将一个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 so 它产生了同样的错误。
关于这个主题没有相关的讨论。还有一个版本为36的jboss父版本修复了这个问题,但是它没有在任何bom中使用。官方的redhat maven repository增量更新和eap 7.3更新中都没有提到这个问题。
除了在本地maven存储库中手动编辑jboss父级之外,如何解决这个问题?有官方的解决办法吗?
谢谢您。

iyfamqjs

iyfamqjs1#

热释光;蚂蚁博士跟我们开了个玩笑。我们需要一起更新插件或ant。
更详细的解释:所以我们迁移的项目是旧的。它同时使用Ant1.9.1和maven 3.0.5。事实证明,在build.xml ant 1.9.1中有一次使用了maven ant任务插件,它在插件jar中附带了自己的maven 2.2.1。在迁移之前,构建自动化工具之间的一切都正常工作。在迁移之后,在新的依赖项中定义了一个版本范围,这对于Maven3.x来说还可以,但是Maven2.x已经死了。我们错误地认为maven3.x导致了这个问题,但是没有。

相关问题