gpt4 book ai didi

java - 将 EAR 中的所有依赖项移至 Maven 中的子文件夹

转载 作者:行者123 更新时间:2023-12-01 13:21:28 24 4
gpt4 key购买 nike

我目前正在 Maven 中构建 EAR 文件。当我构建它时,我在目标文件夹中得到以下内容:

-target/
-MyProject.ear
-MyProject/
-MainProject.jar
-Dependency.jar

如果我打开MyProject.ear在 7Zip 中,我看到 MyProject/ 中存在相同的文件结构

我被要求更改此设置,以便所有依赖项都位于子文件夹中,如下所示:

-target/
-MyProject.ear
-MyProject/
-MainProject.jar
-lib/
-Dependency.jar

现在,我可以通过对我的 pom.xml 文件进行以下更改来使这项工作适用于一个依赖项:

<build>
[...]
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.9</version>
<configuration>
<modules>
<jarModule>
<groupId>Dependency</groupId>
<artifactId>Dependency</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>

但是在实际项目中,我有大约 30 个依赖项。我可以手动添加 <jarModule>为每个依赖项添加标签,但理想情况下我希望它自动将所有依赖项移动到子目录(排除 MainProject.jar )。

我本来希望我可以声明<jarModule>一次并使用通配符作为 groupId 和 artifactId,like Maven allows with exclusions :

<!-- Moving all for the time being, add the exclusion if it works -->
<jarModule>
<groupId>*</groupId>
<artifactId>*</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>

我希望上面的内容能够获取所有 Artifact 并将它们放入 lib 文件夹中。不幸的是,这似乎在 Maven 3.2.1 中不起作用,提供了一个错误,指出 Artifact[jar:*:*] is not a dependency of the project

那么,在 Maven 中构建 EAR 时,如何将所有依赖项移动到子文件夹中?

最佳答案

您应该将包目录限制移动到 ma​​ven-ear-plugin 构建配置下,如下所示:

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>${maven-ear-plugin.version}</version>
<configuration>
<modules>
<jarModule>
<groupId>${group_id}</groupId>
<artifactId>${artifact_id}</artifactId>
<bundleDir>lib</bundleDir>
</jarModule>
<webModule>
...
</webModule>
</modules>
<defaultLibBundleDir>/lib</defaultLibBundleDir>
</configuration>
</plugin>
</plugins>

希望有帮助。

关于java - 将 EAR 中的所有依赖项移至 Maven 中的子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com