假设我在 Maven / Eclipse 中有两个 Java 项目:
- 托管在 GitHub 中的开源应用程序
- 一个包含实用功能的小型私有库,它不是开源的(但我确实有权以编译的形式修改、构建和重新分发,例如作为 .jar 文件)
我想让其他人能够构建、修改和运行应用程序(如果他们愿意,还可以为开源项目做出贡献!),但这意味着他们也需要该库作为依赖项。
我想让事情变得简单,这样构建对我自己和应用程序的用户来说都很容易。
使这项工作最实用的方法是什么?
假设我在 Maven / Eclipse 中有两个 Java 项目:
我想让其他人能够构建、修改和运行应用程序(如果他们愿意,还可以为开源项目做出贡献!),但这意味着他们也需要该库作为依赖项。
我想让事情变得简单,这样构建对我自己和应用程序的用户来说都很容易。
使这项工作最实用的方法是什么?
使用 Maven 时,建议使用 Maven 存储库管理器(例如 Nexus)并按照此处所述配置您的设置文件:
https://help.sonatype.com/display/NXRM3/Maven+Repositories#MavenRepositories-ConfiguringApacheMaven
在您的情况下,这具有额外的好处,您可以使用 Maven 存储库管理器来托管任何私有工件。
在 GitHub 上提供您自己的 Maven 存储库以分发封闭源代码库,您可以重新分发并从您的项目 (pom.xml) 中引用它。
http://cemerick.com/2010/08/24/hosting-maven-repos-on-github很好地介绍了如何在 GitHub 上设置存储库。您应该注意该帖子中还提到的此类微型存储库的警告。
一个非常简单的解决方案是将您的私有库放入您的项目中(例如<project>/lib/library-1.0.jar
)并将其作为系统依赖项包含在内。您可以将它包含在您的 pom 中。
<dependencies>
<dependency>
<groupId>my.private</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/library-1.0.jar</systemPath>
</dependency>
</dependencies>
注意:系统依赖不是传递性的!
从文档
此范围类似于提供的范围,只是您必须提供明确包含它的 JAR。工件始终可用,不会在存储库中查找。