Maven 2 使用maven从依赖项jar中删除文件
我试图从依赖项jar中删除一个文件,该依赖项jar包含在maven中的war文件中。我正在将war部署到JBoss 5.1中,所讨论的jar包含一个我不想要的persistence.xml文件 下面是正在发生的事情:Maven 2 使用maven从依赖项jar中删除文件,maven-2,Maven 2,我试图从依赖项jar中删除一个文件,该依赖项jar包含在maven中的war文件中。我正在将war部署到JBoss 5.1中,所讨论的jar包含一个我不想要的persistence.xml文件 下面是正在发生的事情: my-webapp.war | `-- WEB-INF | `-- lib | `-- dependency.jar | `-- META-INF |
my-webapp.war
|
`-- WEB-INF
|
`-- lib
|
`-- dependency.jar
|
`-- META-INF
|
`-- persistence.xml
当我构建我的war时,我想删除persistence.xml。有人知道这是否很容易做到吗?没有现成的软件,你必须在
包之后使用Maven AntRun插件来做一些肮脏的事情:
- 在临时目录中解压war
- 在另一个临时目录中解压依赖项
- 从依赖项中删除该文件
- 将依赖项的临时目录压缩回jar
- 将依赖项移回war的临时目录
- 将webapp的临时目录压缩回war
- 删除依赖项的临时目录
- 删除webapp的临时目录
以下资源可能会有所帮助
现在,如果问题是JBoss正在部署persistence.xml
中定义的持久化单元(您不希望这样),那么可能有更好的解决方案。您似乎可以在jboss ignore.txt
文件中声明要忽略的文件,例如:
WEB-INF/lib/dependency.jar/META-INF/persistence.xml
这个功能在那里,但我从未使用过
看见
我想你必须使用maven shade插件(见下面的链接)
要么构建一个包含依赖项减去persistence.xml的Über jar,要么将依赖项转换为没有persistence.xml的新内容
应该这样做:
肖恩您可以使用
这应该适用于您的用例:
org.codehaus.mojo
.我考虑过这个问题,但是你会如何在构建中插入这个?你如何告诉maven war插件选择überjar而不是“真正的”依赖项。在war插件的依赖项中添加一个分类器。添加将uberjar部署到构建中的部署生命周期。实际上,本地安装可能就可以了。看看Sean这真是太棒了!这应该是公认的答案,因为truezip插件将所有手动工作从您手中夺走。