【发布时间】:2016-01-22 23:02:41
【问题描述】:
我有一个使用 Apache Commons IO 依赖项的开源项目。
我不使用Maven构建,只使用Ant,最后jar包含Apache Commons IO依赖:目的是用户不需要设置CLASSPATH。
所以二进制版本只包含 一个 jar。假设它的名字是project-1.0.jar。
现在我想将我的项目包含在 Maven Central 中。
我创建了一个 pom.xml,其中包含编译所需的 Commons IO 依赖项:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
然后像往常一样,我将project-1.0.jar、project-1.0-sources.jar 和project-1.0-javadoc.jar 发送给 Sonatype。
如何在pom.xml 中声明project-1.0.jar 已经 包含依赖项?
这样做是否可能/合法?
如果没有,其他选择是什么?
(我想为 Maven 用户和非 Maven 用户保持相同的构建,以简化构建、测试和维护。)
谢谢,
妮可
【问题讨论】:
-
别那样做。你的 jar 应该包含你的类,并且只包含你的类。作为用户,我可能需要在您的库中使用另一个版本的 commons-io。我什至不确定您是否可以在 Maven Central 上您自己的库中重新分发 commons-io。 Maven 的重点是为您设置类路径。因此,对于使用 Maven 的开发人员来说,设置类路径不是问题。
-
谢谢,这很有说服力。您可以将其发布为答案吗?
-
如果你真的有这样一个用例,在这种情况下你以某种方式与第三方库的特定版本绑定在一起,那么将这个库重新打包并内化到你的库中可能是有意义的。自己的源代码。用您自己的前缀为其所有包添加前缀,并将源代码放入项目的源代码树中。
-
@David,谢谢,但这不是我的问题。
标签: maven ant dependencies pom.xml sonatype