Maven 最佳实践

标签 maven maven-2 repository

我有几个关于 Maven 最佳实践和管理存储库的问题。

在我的环境中,我不想去中央 maven 存储库,而是将所有内容存储在内部存储库中。我应该只要求每个用户将信息放入禁用使用来自 maven 存储库的快照或版本的 settings.xml 文件中,还是应该在 POM 文件中?

另外,我希望所有用户都访问同一个公司存储库。这个存储库信息应该放在 pom 中还是 settings.xml 中?如果它在 pom 中,maven 将如何知道去存储库,因为它需要已经知道存储库在哪里才能获取 pom?

最佳答案

第一步 :在您的局域网中的服务器上安装nexus。它非常棒——易于安装(真的,只需几分钟!)并且坚固。我们有大约 50 名工程师和许多 CI 服务器整天敲打它,它已经稳定了好几个月。假设您将它安装在 DNS 中名为“nexus.local”的服务器上。

第二步 : 从 http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html 复制 settings.xml ,根据需要修复主机名,将其提交到您的源代码系统,并告诉您的所有开发人员将其复制到他们的 ~/.m2/settings.xml 中。

第三步 : 正确设置项目的 pom.xml。您将需要一个定义“distributionManagement”部分的“父 POM”,如下所示:

  <distributionManagement>
    <snapshotRepository>
      <id>nexusSS</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://nexus.local:8081/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>nexusRelease</id>
      <name>Nexus Release Repository</name>
      <url>http://nexus.local:8081/nexus/content/repositories/releases</url>
    </repository>
  </distributionManagement>

第四步 :启用“mvn deploy”——进入你的nexus UI(类似于http://nexus.local:8081/nexus),点击users,点击“deployment”,然后给它一个密码。然后编辑您的 ~/.m2/settings.xml 并添加:
<settings>
  ...
  <servers>
    <server>
      <id>nexus</id>
      <username>deployment</username>
      <password>PASSWORD</password>
    </server>
  </servers>
</settings>

通过运行“mvn deploy”检查它是否有效,并且您应该已将项目的 Artifact 安装到 nexus 中。

第五步 : 阅读 maven 的优秀文档:http://www.sonatype.com/products/maven/documentation/book-defguide

关于Maven 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993955/

相关文章:

java - 在制作项目 jar 时包含一些 jar 并排除其他 jar 吗?

java - 如何在不解压缩所有依赖项的情况下使用 Maven 组装控制台应用程序?

c# - 迁移到异步 : Repository

spring - 仅使用一个存储库保存请求来保存一个对象和一个嵌套对象

java - Java运行时环境检测到 fatal error :

maven - 模块继承与聚合

java - 是否有一种可移植的方法来获取 Maven 项目中资源的路径?

ant - Maven Antrun和依赖项

Maven - 完全禁用本地存储库,只转到远程

maven - 在多模块 Maven 项目中共享特定的 PMD 规则集