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

如何使用Maven针对不同版本的JBoss

戚建德
2023-03-14

我们编写一个部署到 JBoss AS 的应用程序。我们目前有两个客户,一个运行 JBoss EAP 6.1,另一个运行 JBoss AS 7.1.1。我正在将我们的构建系统从 Ant 转换为 Maven。我的问题分为两部分。

>

  • 在Maven中指定JBoss依赖项的最佳方法是什么?

    我尝试了类似的东西:

    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>
    

    而且

    <dependency>
        <groupId>org.jboss.as</groupId>
        <artifactId>jboss-as-ee</artifactId>
        <version>7.1.1.Final</version>
        <scope>provided</scope>
    </dependency>
    

    但这些不包括编译所需的所有传递依赖项。我们有一些依赖于 JBoss 的代码(我知道可能不是最佳实践)。在 Ant 中,我们在编译时在类路径中包含特定的 JBoss JAR(jboss-common-core-xxx.jar、jboss-ejb3-api_3.1_spec-xxx.jar 等)。是否存在包罗万象的依赖关系,或者我是否在使用标准 EE 代码之前一直指定单个依赖关系?

    如何定位两个不同版本的 JBoss?

    在EAP 6.1和AS 7.1.1之间,JBoss提供的库版本有一些不同。比如AS 7.1.1提供了JBoss-JMS-API _ 1.1 _ spec-1 . 0 . 0 . final . jar,EAP 6.1提供了JBoss-JMS-API _ 1.1 _ spec-1 . 0 . 1 . final-red hat-2 . jar。

    到目前为止,我一直在使用Maven配置文件

    <profiles>
        <profile>
            <id>jboss-as-7.1.1.Final</id>
            <dependencies>
                ...
            </dependencies>
        </profile>
        <profile>
            <id>jboss-eap-6.1</id>
            <dependencies>
                ...
            </dependencies>
        </profile>
    </profiles>
    

    不过,我不是JBoss专家。JBoss本身是否提供了一些我没有看到的更好的解决方案?

  • 共有1个答案

    乐城
    2023-03-14

    尝试使用jBOSS BOM(物料清单),这样您就可以定义您要使用的BOM版本,并且您将确保获得工件的正确版本。

    本文将帮助您: Maven 和 JBoss:如何使用 BOM 保持发布同步

     类似资料:
    • 问题内容: 我已经安装了Java6和7,并使用eclipse编写了一个简单的jdbc应用程序。我在lib文件夹中同时有sqljdbc4.jar和sqljdbc.jar。我收到此消息… 2013年12月18日9:29:51 com.microsoft.sqlserver.jdbc.SQLServerConnection 严重:该驱动程序不支持Java Runtime Environment(JRE)

    • 我有一个Maven项目,其中包括一个Maven插件(Liquibase Maven插件),它公开了不同的目标。其中两个目标(update和diff)需要在它们之间发生冲突的不同参数(因为两者的语义不同),因此我需要在两个目标执行中赋予Maven不同的属性。 有没有办法在Maven中为不同的目标传递不同的配置?

    • 问题内容: 如何在网络驱动程序中设置Firefox版本?我只想使用其他版本的Firefox。 就像其他版本19、20、21 … 请提供一个通用解决方案,该解决方案也对其他浏览器有所帮助。 问题答案: 您必须在系统上安装所有版本。然后,您可以使用System属性来定义Firefox的路径。请注意,由于路径是通过System属性设置的,因此您将无法在同一Java进程中运行两个不同的Firefox。 此

    • 我尝试在Intellijidea中打开Maven项目。这个项目使用了spark和Scala。当我跑的时候: 则会给出错误: [错误]无法执行目标org.scalastyle:scalastyle-maven-plugin:0.7.0:项目spark-mllib_2.10:scalastyle执行期间失败:您有50个scalastyle冲突 我认为问题出在Maven的版本上。实际上,在Intelli

    • 将以上内容更改为 解决了问题。但是,与其将Scala-XML2.11版本1.0.5排除在scalatest之外,我想强制scala编译器使用Scala-XML2.11版本1.0.5而不是版本1.0.4。(我在https://mvnrepository.com上研究了这些版本。)因此,我尝试将替换为 然而,这导致 [警告]*org.scala-lang:scala-library:(2.11.8,2

    • 问题内容: 似乎这应该是一个简单的任务,它具有“首选项”菜单中用于不同JRE的选项,并且能够为每个项目设置不同的编译器和构建路径。但是,这似乎也根本行不通。 例如,我将JAVA_HOME设置为Java 1.6的jre。我仍然不清楚Eclipse如何使用此功能,但是它似乎是默认设置,并且未采用项目替代。我还安装了Java 1.5,并在Eclipse的Java-> Installed JREs部分中为

    • 问题内容: 我有一个独立使用两个依赖项的项目:BoneCP和Hibernate。但是由于SLF4J及其版本冲突,它无法正常工作,因为BoneCP需要SLF4J 1.5,而Hibernate需要SLF4j 1.6。如您所知,在pom.xml中不可能同时具有相同依赖项的两个不同版本。所以,我该怎么办才能解决这种惊人的SLF4J副作用??? 我得到的错误是臭名昭著的: 我需要添加它,但是不允许具有两个不

    • 问题内容: 这是一个普遍的问题。我正在使用2个库 A.jar 和 B.jar ,它们取决于同一jar的不同版本。 假设在运行时我需要 THIS.xxxjar 我可以针对其依赖项编译特定的jar(A.jar / B.jar),但在运行时我只需要加载1个版本。哪一个? 仅加载1个依赖关系(最新版本)意味着,如果库不是向后兼容的,那么我的代码可能会抛出运行时异常(那里有向后兼容的库吗?)。 无论如何,我