我是 Maven 新手,决定在我最近开始开发的一个项目上开始使用它。该项目是一个 Java 库,它解析用自然语言编写的单位转换查询,并执行从自然语言查询中解释的单位转换。
对于这个项目,我需要一个 Java 的变形库(复数/单数化单词),在考虑了一些选项后,我决定开发自己的库。事实证明,有些人对单独使用此变形功能感兴趣。
所以问题是,将提供变形功能的类(位于我的单位转换项目中的单独包中)拆分为单独的新 Maven 项目、在某种公共(public) Maven 存储库中发布此变形库,并将其指定为我的单位转换库的依赖项的最佳方法是什么。这样,任何其他想要使用变形库的人都可以通过将其作为自己项目的依赖项来实现。
请注意,我的问题包括“在 Maven 存储库中发布一个库,以便它可以成为其他项目的依赖项”的部分。我对 Maven 完全陌生,所以我真的没有掌握整个事情。我只是限制自己设置自己项目的依赖项、构建、运行等。
最佳答案
对于开源:
- 提供源代码,例如在sourceforge.net
- 确保您的 POM(直接或间接)继承自:
:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
- 执行 Maven 发布以部署到 Maven Central:按照以下步骤操作:https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-9.StageaRelease
对于闭源:
- 设置 Maven 存储库管理器,例如 Nexus
- 确保目标受众可以使用公共(public)群组
- 配置Maven发布插件:https://maven.apache.org/plugins/maven-release-plugin/
一般建议:
- 软件包名称以反向域名开头,例如。
- org.myproject.mycomponent(如果您有此项目的自定义域)
- com.mycompany.myproject.mycomponet(如果您的公司拥有域名 mycompany.com)
- net.sourceforge.myproject.mycomponent(如果您将源代码托管在 myproject.sourceforge.net 并且没有自定义域)
- 组 ID:
- 使用包名称的开头,例如 com.mycompany.myproject
- 通常对单个 VCS 存储库中的所有 Maven 项目使用相同的 groupId
- artifactId:确保它足够唯一,因为它将是 jar 文件名的开头,例如我的公司-我的项目-我的组件
- 设置 CI 服务器,例如 Jenkins
- 确保 CI 服务器由专用系统用户运行
- 将必要的凭据添加到 CI 用户的 settings.xml 文件
- 配置“全新安装”作业
- 配置发布库的作业(Jenkins 有一个特殊的插件来支持 Maven 发布)
- 考虑将您的 jar 变成 OSGi 包
关于java - 将 java maven 项目组件提取为单独的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10556561/