我使用的是Maven 3.3.9。我正在创建一个EAR项目,并在POM中指定了这个项目。
<packaging>ear</packaging>
字符串
我想使用“skinnyWars”选项,通过这个选项,打包在我的EAR中的WAR文件引用EAR中的一组库,而不是每个库都有自己的JAR副本。例如,在我的依赖项部分中,我有这样的东西
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${version.mysql}</version>
</dependency>
型
我设置了下面的maven-ear-plugin配置
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<finalName>${project.artifactId}</finalName>
<version>5</version>
<generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation>
<configuration>
<defaultLibBundleDir>lib/</defaultLibBundleDir>
<skinnyWars>true</skinnyWars>
</configuration>
<modules>
<webModule>
<groupId>org.mainco.subco</groupId>
<artifactId>moduleA</artifactId>
<uri>moduleA.war</uri>
<bundleFileName>moduleA.war</bundleFileName>
<contextRoot>/moduleA</contextRoot>
</webModule>
<webModule>
<groupId>org.mainco.subco</groupId>
<artifactId>moduleC</artifactId>
<uri>moduleC.war</uri>
<bundleFileName>moduleC.war</bundleFileName>
<contextRoot>/moduleC</contextRoot>
</webModule>
<webModule>
<groupId>org.mainco.subco</groupId>
<artifactId>moduleB</artifactId>
<uri>moduleB.war</uri>
<bundleFileName>moduleB.war</bundleFileName>
<contextRoot>/moduleB</contextRoot>
</webModule>
<webModule>
<groupId>org.mainco.subco</groupId>
<artifactId>moduleD</artifactId>
<uri>moduleD.war</uri>
<bundleFileName>moduleD.war</bundleFileName>
<contextRoot>/moduleD</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
型
但当我跑步的时候
mvn clean install
型
虽然我在输出中看到了像
[INFO] Copying artifact [jar:mysql:mysql-connector-java:5.1.22] to [mysql-connector-java-5.1.22.jar]
型
共享JAR文件“mysql-connector-java-5.1.22.jar”位于EAR的根目录下,而不是在我的配置中指定的“lib”目录下。实际上,根本没有创建“lib”目录。更糟糕的是,打包在EAR中的WAR文件仍然包含了我希望它们共享的库的副本。为什么我目前的“skinnyWar”配置不工作,我需要做什么调整,以便它会?
1条答案
按热度按时间vh0rcniy1#
你应该像这样更改你的配置:
字符串