如何在我的maven项目中导入所有提供的Wildfly库?

时间:2017-07-06 15:15:48

标签: maven java-ee wildfly

有没有办法在Maven很乐意理解的xml代码块中翻译这种人类语言?

  

Hey Maven,看你是一个很好的依赖管理系统。我正在开发一个旨在部署在Wildfly 10.1.0上的JavaEE项目。请将Wildflys父BOM http://repo1.maven.org/maven2/org/wildfly/wildfly-parent/10.1.0.Final/wildfly-parent-10.1.0.Final.pom中指定的所有库放在编译时类路径上,并将它们视为Wildfly在运行时提供的。请不要打扰我列出项目pom文件的依赖项部分中的每个引用的工件。谢谢Maven,你太酷了。

澄清: 据我所知,导入我的pom文件的dependencyManagement部分中的bom文件只会让我无法指定每个工件的版本号,但我仍然需要声明每个artifactID和groupID。

这确实在这里讨论How to use BOM file with Maven 但在这个答案中也说明了:

  

然后您不必指定依赖项的version属性。

我更愿意只声明我使用的是wildfly,然后能够使用所有客户端库而不声明任何其他依赖项。

但我必须承认,我有一种想念错过的感觉。应该有一个简单的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

如果您希望将另一个pom中的所有内容设置为依赖项,并且您可以在pom中指定。野生蝇10.1.0.Final的 minimal pom包括一切似乎如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>wft</groupId>
    <artifactId>wft</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>wft</name>
    <description>wft</description>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.wildfly</groupId>
            <artifactId>wildfly-spec-api</artifactId>
            <version>10.1.0.Final</version>
            <type>pom</type>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

但是我仍然建议像wildfly自己做的那样去做,就是把BOM放在depencency management部分并根据需要声明工件。为什么?我不知道除了阅读起来更干净,并且可能更容易编译和构建maven / java。