我有一些proprietary.jar需要包含在我的项目中,但我不希望将其安装到本地存储库。
我最初所做的是将jar放入项目的lib/文件夹中的版本控制中,然后将Maven依赖项指定为:
<!-- LOCAL DEPENDENCY -->
<dependency>
<groupId>topsecret</groupId>
<artifactId>proprietary</artifactId>
<version>0.0.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/java/proprietary.jar</systemPath>
</dependency>然而,当我的项目成为别人的依赖时,这就成了一个大问题。Maven将无法验证此POM,因为路径不是绝对路径。
解决此问题的最佳方法是什么?
发布于 2010-05-27 07:29:13
我在previous answer中描述了当您不能使用公司存储库时,如何设置基于文件的存储库并避免邪恶的system作用域。看看这个。
发布于 2010-05-27 05:35:13
我认为需要回答的第一个问题是,为什么不想将其安装在本地存储库中?
Maven遵循配置哲学的惯例,所以你越坚持“Maven的方式”,事情对你来说就会越困难。除非您有令人信服的理由不将jar安装到存储库,否则对我来说,这似乎是最好的解决方案。
如果您担心未经授权的用户获得对专有jar的访问权限,还有其他解决方案,例如使用Nexus或Archiva等存储库管理器。
发布于 2010-05-27 05:39:25
对于第三方人工制品,创建一个专门用于第三方人工制品的单独存储库是最干净和最轻松的。这使得团队中的其他任何人都可以轻松地构建您的项目。
例如,我正在使用Nexus (社区编辑)来管理maven工件。当有人依赖不在maven central中的第三方库时,我们将其添加到第三方库中。这使得其他所有人都可以构建,而不必手动查找和下载工件。
Nexus支持各种身份验证策略,包括LDAP,因此可以保护敏感工件免受未经授权的使用。自从迁移到存储库管理器后,管理人工制品,特别是第三方人工制品变得容易得多。
看见
PS: Nexus的另一个优点是您可以创建一个“虚拟”存储库,它是由多个存储库组成的“扁平化”成一个存储库。这结束了将存储库添加到settings.xml或将存储库放入项目pom中的做法。您可以创建自己的存储库、第三方存储库和其他流行的存储库(central、apache、codehaus、jboss等)。并将nexus设置为一面镜子。然后,所有请求都会经过Nexus,从而加快构建速度并简化存储库配置。
https://stackoverflow.com/questions/2916949
复制相似问题