- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在 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 时,如何将所有依赖项移动到子文件夹中?
最佳答案
您应该将包目录限制移动到 maven-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/
有人可以解释一下什么是 exploded EAR 吗?我检查了谷歌但找不到明确的答案。是不同的格式吗? 与非 exploded EAR 有什么区别? 最佳答案 压缩的 EAR 文件,扩展名为 .ear
我在单个域下有 2 个 .ear 文件(例如:abc.ear、def.ear)。他们之间如何沟通? 最佳答案 您可以使用Remote Method Invocation 。通常,应用程序的 Bean
我的 gradle 模块具有以下文件夹结构: src main application META-INF applica
基本上,我遇到一种情况,我必须从另一个 EAR 中的 WAR 访问一个 EAR 中 JAR 中声明的 EJB。两个 EAR 都部署到同一 WebLogic 托管服务器(同一域)。 Java 代码中的
假设我有一个标准的 EAR 文件(以及用于生成它的源文件),需要进行哪些额外的处理才能将其转换为 IBM WebSphere“增强型 EAR”? 问这个问题的另一种方法是问“增强型 EAR 和标准 E
我正在尝试使用 gradle build 构建 ear 并且 ear 构建良好。在我的项目中,ejb 模块正在创建多个自定义 jar 以及 ejb jar 。如何将它们添加到 ear 根目录而不是将它
你可以将一个耳朵文件放入另一个耳朵文件中吗?我尝试将 Ear 依赖项添加到 Ear 模块,指定 Artifact 类型为 ear 使用maven 3.3.3,但我得到 Failed to initia
我有两个.Ear 文件,即A.EAR 和B.EAR。第一个文件是我的应用程序(大约 1.5 MB),第二个文件包含所有需要的库,例如 Hibernate、log4j 等(大约 70 MB)。我怎样才能
我在尝试从另一个 EAR 调用部署在一个 EAR 中的远程服务时遇到问题。我没有为我的 EJB 指定任何名称,无论它们是 @Local 还是 @Remote,因此只需使用注释并通过 @EJB 注入(i
在 jenkins 上执行 mvn install 时出现此错误: [JENKINS] Archiving disabled Waiting for Jenkins to finish collect
我有两个 Spring 应用程序 A 和 B,每个应用程序都位于一个单独的 EAR 文件中。现在我想从 A 调用到 B,反之亦然,甚至可能是 A -> B -> A 或更多。 调用必须交易安全。 推荐
我的项目结构如下。服务器是 Glassfish 4。IDE - netbeans 7.4。项目 temp 被项目 a 使用。 EAR + lib/temp.jar + a.war Temp.jar
我需要在使用 maven-ear-plugin 生成的 EAR 中添加 2 个 XML 文件。 不幸的是,我还没有看到将任意文件添加到 EAR 的方法。 documentation该插件的内容为“EA
我们有无数次 war 的解决方案。 war 在它们都使用hibernate和spring的意义上是相似的。这意味着我们在每场 war 中都有许多相同的 jar 。这正在成为一个问题,因为耳朵的大小开始
Desperatley 尝试使用 Maven 3 中的 Maven EAR 插件版本 2.10.1 来创建包含某些模块的 EAR bundle 。generate-application-xml 目标
我有一个 EAR,在上下文“/”中部署为生产环境。 我想在服务器上部署应用程序的测试版本,同一个 Glassfish 实例。 是否可以在同一实例中的不同上下文和端口下部署应用程序? 如果是这样,除了更
Gradle 构建脚本会创建一个 EAR 文件,其中包含一些 jars 和一个 war。这一切之前都是在 Maven 中完成的,现在是迁移到 Gradle 的主题。 环境: Gradle 1.12 G
我用 Java EE 创建了一个应用程序现在想在互联网上发布它。出于这个原因,我需要 EAR文件。但我无法找到它。 我搜索了每个目录,但我看不到它。 EAR在哪里文件留在文件目录? 我用 Eclips
我正在使用Gradle,并且想要构建一个EAR,其中包括在存储库中找到的预构建的WAR文件。我有这样的事情: dependencies { earlib 'PathName:NameOfPre
我有一个java Ear存档,其中包含“lib”文件夹,在application.xml中声明为库目录。 我的问题是某些模块不需要 lib 文件夹中的某些 jar。此外,我的模块之一(.war 存档)
我是一名优秀的程序员,十分优秀!