我有一个关于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
依赖于core
和core
至json
。
为了使所有需要的依赖关系具有正确的版本,我在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
。
答案 0 :(得分:0)
如果没有看到原始的无形轮廓,也没有描述整个pom,不能说出任何准确但有根据的猜测。
您在个人资料相关性管理方面有json
。
它是否也在没有版本的pom
主要依赖项中?如果不是,它将不会被复制到lib或打包。它仅由个人资料<dependencyManagement>
管理。
json
是否需要按个人资料进行管理?它似乎有${version.json}
,如果复制,每个配置文件都是相同的。
对我来说似乎修复可能是你从配置文件dependencyManagement中删除json
并将其作为普通依赖项添加到主依赖项 - 这只是为了使分析更简单 - 它可以被管理但如果不需要设置json
的版本直接依赖于。