在配置文件中使用不同的JBoss BOM

时间:2017-10-24 15:27:44

标签: maven jboss wildfly maven-bom

我有一个关于JBoss和WildFly使用BOM的一般性问题。 是使用不同的配置文件为JBoss 7和WildFly 10构建项目的方法吗?

我尝试将物料清单定义从WildFly复制到这样的配置文件中:

<profile>
    <id>WildFly10</id>
    <dependencyManagement>
        <dependencies>         
            <dependency>
                <groupId>org.wildfly.bom</groupId>
                <artifactId>wildfly-javaee7-with-tools</artifactId>
                <version>${version.jboss.bom}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- JSON -->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>${version.json}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</profile>

当然与JBoss7配置文件相吻合。

但是这样它就不会在lib文件夹中添加重要的库,即这个定义在耳塞中,子项目(war)添加了json依赖。如果没有配置文件,maven会在lib文件夹中添加json jar,但如果我将其放在配置文件中则不会。

在我读到更改配置文件中的依赖项是反模式[1]后,我想知道如何为JBoss7和WildFly 10构建我的项目。

更新

很抱歉这个问题的快速拍摄。这里有更多细节。

项目结构:

|-parent (pom)
  |- myapp (war)
  |- core (jar)
  |- deployment (ear)

所以deployment是构建整个耳朵的项目,其中包含myapp作为Web应用程序,core作为库。 myapp依赖于corecorejson

为了使所有需要的依赖关系具有正确的版本,我在dependencyManagment中包含了wildfly-javaee7-with-tools。也是在那里定义的json版本。 core项目将json库作为普通依赖项。

此时这应该是非常标准的。但问题是我希望能够为JBoss 7和WildFly 10构建,因为我必须改变

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

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

当然,${version.jboss.bom}会从WildFly的10.1.0.Final更改为JBoss的1.0.7.Final

为了做到这一点,我尝试将wildfly-javaee7-with-tools移到配置文件中。我的第一个猜测是只将此依赖项移到配置文件中。但是json jar没有包括在内。之后我也尝试像上面一样移动json

1 个答案:

答案 0 :(得分:0)

如果没有看到原始的无形轮廓,也没有描述整个pom,不能说出任何准确但有根据的猜测。

您在个人资料相关性管理方面有json

它是否也在没有版本的pom主要依赖项中?如果不是,它将不会被复制到lib或打包。它仅由个人资料<dependencyManagement>管理。

json是否需要按个人资料进行管理?它似乎有${version.json},如果复制,每个配置文件都是相同的。

对我来说似乎修复可能是你从配置文件dependencyManagement中删除json并将其作为普通依赖项添加到主依赖项 - 这只是为了使分析更简单 - 它可以被管理但如果不需要设置json的版本直接依赖于。