maven - 在EAR打包时不要在/ lib之外复制项目jar

Mad*_* CM 1 maven-3 maven maven-ear-plugin

包装EAR时会发生这种情况

我的pom.xml打包了ear文件,它应该包含projectA.jar文件和/ lib文件夹之外的projectB.war.显然,projectA.jar文件正在/ lib文件夹里面,这不应该是.我有我的application.xml,它告诉我们这两个项目应该在lib之外.

问题:我如何指示maven不将projectA.jar捆绑在/ lib文件夹中,而是将其捆绑在/ lib文件夹之外?

我的EAR结构应该是:

MyWebEAR

\lib
\META-INF
projectA.jar
ProjectB.war
Run Code Online (Sandbox Code Playgroud)

下面是我的pom.

<dependencies>
    <dependency>
        <groupId>com.xxx.sms</groupId> 
        <artifactId>projectA</artifactId> 
        <version>1.0-SNAPSHOT</version>             
    </dependency>
    <dependency>
        <groupId>com.xxx</groupId>
        <artifactId>projectB</artifactId>
        <version>1.0-SNAPSHOT</version>
        <type>war</type>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-ear-plugin</artifactId>
            <configuration>
                <defaultLibBundleDir>lib</defaultLibBundleDir>
                <earSourceDirectory>${basedir}</earSourceDirectory>
                <earSourceIncludes>META-INF/*</earSourceIncludes>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
                <generateApplicationXml>false</generateApplicationXml>
                <applicationXML>${basedir}/META-INF/application.xml</applicationXML>
            </configuration>
        </plugin>
    </plugins>
    <finalName>MyWebEAR</finalName>
</build>
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间.

DB5*_*DB5 5

您需要jarModulemodulesmaven-ear-plugin部分中configuration为projectA依赖项专门定义配置,并明确设置jar放置的位置.

所以你的POM将是:

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <configuration>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <earSourceDirectory>${basedir}</earSourceDirectory>
        <earSourceIncludes>META-INF/*</earSourceIncludes>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
        <generateApplicationXml>false</generateApplicationXml>
        <applicationXML>${basedir}/META-INF/application.xml</applicationXML>
        <modules>
            <jarModule>
                <groupId>com.xxx.sms</groupId>
                <artifactId>projectA</artifactId>
                <bundleDir>/</bundleDir>
            </jarModule>
        </modules>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

告诉maven-ear-plugin中的value(/)bundleDir将projectA的jar放在ear的根文件夹中而不是lib的默认位置.

您可以在插件文档中查看相关详细信息:http: //maven.apache.org/plugins/maven-ear-plugin/examples/customizing-module-location.html