我有一些来自某个版本的EAR文件。我想将此EAR文件的内容提取到另一个文件夹中。我很困惑如何做到这一点。我看了,试过了 http://maven.apache.org/plugins/maven-ear-plugin/ 和 http://maven.apache.org/plugins/maven-dependency-plugin/usage.html
但是maven无法找到该文件或者它存在依赖性问题。
由于我是maven的新手,我不明白如何设置这些插件。
使用以下插件时出现以下错误。
无法找到ECM:ECM:ear:http://repo.maven.apache.org/maven2中的1.0:缓存在本地存储库中
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>ECM</groupId>
<artifactId>ECM</artifactId>
<version>1.0</version>
<type>ear</type>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/earoutput</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
答案 0 :(得分:4)
您可以使用dependency:unpack-dependencies
执行此操作。我只是修改我的答案,因为根据你的评论,你的耳朵是由其他一些构建产生的。如果您没有可以部署耳神器的企业存储库,则必须使用&#34; system&#34;范围,但请注意,通常气馁。
将以下依赖项添加到您的pom.xml
<dependency> <groupId>ECM</groupId> <artifactId>ECM</artifactId> <version>1.0</version> <type>ear</type> <scope>system</scope> <systemPath>/path/to/your/abc.ear</systemPath> </dependency>
将以下插件添加到postBuild模块pom.xml
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>unpack</id> <phase>package</phase> <goals> <goal>unpack-dependencies</goal> </goals> <configuration> <includeArtifactIds>ECM</includeArtifactIds> <outputDirectory>${project.build.directory}/earoutput</outputDirectory> </configuration> </execution> </executions> </plugin>
答案 1 :(得分:0)
答案 2 :(得分:0)
Maven Dependency Plugin及其unpack目标可以做到这一点。
示例配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>myear</groupId>
<artifactId>myear</artifactId>
<version>1.0</version>
<type>ear</type>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/earoutput</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
这将获取'myear.ear'工件并将其提取到'target / earoutput'目录。这也适用于JAR,WAR和任何其他类似zip的文件。这下执行的阶段是'package' - 如果你需要在构建的其他部分使用这些资源,这可能为时已晚。如果需要,可以将阶段更改为“generate-resources”。
您提到您已尝试使用依赖项插件。来自另一个Maven项目的EAR文件是否已安装在本地Maven存储库中?如果在您尝试使用的插件配置后仍然无效。
(编辑:更新依赖关系和本地存储库的信息)
为此,您需要将EAR文件放入本地Maven存储库(这只是磁盘上的目录)。但是如果其他人也需要构建你的项目,你有几个选择:
轻松导入本地存储库。它与these instructions非常相似。
使用以下命令:
mvn install:install-file -Dfile=<path-to-EAR-file-on-local-filesystem> -DgroupId=myear
-DartifactId=myear -Dversion=1.0 -Dpackaging=ear
(根据需要修改path,groupId,artifactId和version)
组ID和工件ID只是为了唯一地识别工件。
在本地存储库中安装后,依赖插件应该可以工作并找到工件。