Maven 2 使用maven从依赖项jar中删除文件

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 |

我试图从依赖项jar中删除一个文件,该依赖项jar包含在maven中的war文件中。我正在将war部署到JBoss 5.1中,所讨论的jar包含一个我不想要的persistence.xml文件

下面是正在发生的事情:

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插件将所有手动工作从您手中夺走。