使用maven“扩展”现有的jar文件

时间:2013-05-17 13:22:01

标签: maven

我的项目包含几个必须集成到最终jar文件中的类。

所以我现在的“工作流程”看起来像是:

mvn compile && jar uf contribution.jar -C target/classes .

我想这可以通过maven-jar插件或通过maven-assembly完成,但无法弄清楚如何。

1 个答案:

答案 0 :(得分:2)

简单 - 将元素<packaging>jar</packaging>添加到pom.xml并调用以下内容:

mvn package

有关详细信息,请参阅Maven build lifecycle。如果你计划在你的项目中使用Maven,那真的是必读的。

修改

感谢您的更新,我知道您的意思。可能有更好的方法来做到这一点,但这就是我使用的方法:

如果你以通常的方式将它作为依赖项添加,Maven会自动包含这个jar,即:

<dependencies>
    ...
    <dependency>
        <groupId>some.group</groupId>
        <artifactId>contribution</artifactId>
        <version>1.0.0</version>
    </dependency>
    ...        
</dependencies>

问题是如何确保maven能找到罐子?如果jar在Maven Global存储库中,它会自动找到它,所以请务必先检查它。如果没有,那么您将必须创建自己的存储库来存储自定义jar 。这可能不是最聪明的方法,但我就是这样做的。请注意, 与存储在.m2文件夹中的缓存相同。

假设我们想使用c:\​​ maven \ repo作为我们的本地。为此,请首先确保该文件夹存在,然后将以下行添加到pom.xml

<repositories>
    <repository>
        <id>my-repo</id>
        <url>file://c:\maven\repo</url>
    </repository>
</repositories>

接下来,您需要手动将贡献jar添加到此仓库。为此,请执行mvn deploy:deploy-file命令并为其指定适当的值。有关详细信息,请参阅here

现在,在构建/编译/打包原始项目时,它应该在包装中包含contrib.jar,因为它是依赖项。

希望这会有所帮助:)