2

在我的公司,我们使用 Nexus 服务器来获取工件。这很好。但有时我也想在家里使用 Maven,因为我无法访问公司 Nexus。有没有一种简单的方法来交换 Maven 设置配置文件?它是否可以轻松交换m2eclipse

目前我正在使用以下 settings.xml:

<settings
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <servers>  
          <server>  
              <id>central</id>  
              <username>company-user</username>  
              <password>company-user</password>  
          </server>  
          <server>  
              <id>mirror</id>  
              <username>company-user</username>  
              <password>company-user</password>  
          </server>  
      </servers>  
      <mirrors>  
        <mirror>  
            <id>mirror</id>  
            <url>https://url.to.company.nexus</url>  
            <mirrorOf>*</mirrorOf>  
        </mirror>  
      </mirrors>  
      <profiles>  
          <profile>  
              <id>defaultprofile</id>  
              <repositories>  
                  <repository>  
                      <id>central</id>  
                    <name>Repository for Company artifacts</name>  
                      <url>https://url.to.company.nexus</url>  
                      <releases>  
                          <enabled>true</enabled>  
                    </releases>  
                      <snapshots>  
                          <enabled>true</enabled>  
                    </snapshots>  
                  </repository>  
              </repositories>  
              <pluginRepositories>  
                  <pluginRepository>  
                      <id>central</id>  
                    <name>Repository for Company artifacts</name>  
                      <url>https://url.to.company.nexus</url>  
                      <releases>  
                          <enabled>true</enabled>  
                    </releases>  
                      <snapshots>  
                          <enabled>true</enabled>  
                    </snapshots>  
                  </pluginRepository>  
              </pluginRepositories>  
              <properties>  
                  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
              </properties>  
              <activation>  
                  <activeByDefault>true</activeByDefault>  
              </activation>  
          </profile>  
      </profiles>  
      <activeProfiles>  
          <activeProfile>defaultprofile</activeProfile>  
      </activeProfiles>  
</settings>

我知道我可能必须向 中添加新配置文件http://repo1.maven.org/,但如何确保现有配置文件mirrors不会因超时而抱怨?

4

4 回答 4

3

根据我的经验,最好有多个设置文件并根据需要交换它们。通过从不同名称的文件复制现有 settings.xml 的顶部,或使用 mvn 命令的 -s 选项来指定设置文件。如果这太麻烦而无法一直键入,您还可以使用不同的设置文件为您的 mvn 命令创建别名。但是,这会破坏 Maven 的 bash 完成,这就是为什么我坚持只使用脚本复制设置文件。

同样的事情实际上适用于交换上下文,例如 Git 更改 .gitconfig 文件,因此您可以将所有这些文件更改打包到脚本或 git 中的不同分支或其他..

此外,它可以帮助在本地运行 Nexus 并连接到它,然后让它代理所有外部存储库。

于 2013-01-08T05:44:08.593 回答
2

我能建议的最好的方法是使用 Git/SVN/ 并签入 settings.xml 文件并使用不同的分支来分隔公司和家庭。使用任一

svn switch URL/branches/company
svn switch URL/branches/home

或者

git checkout company
git checkout home

配置文件将不起作用,因为 mirrorOf 部分无法放入配置文件区域。可以通过配置对话框更改 m2e。但这可能会导致与命令行不一致。

于 2013-01-07T08:52:47.310 回答
1

不幸的是,无法在配置文件中配置镜像。在 Maven 中有一个开放的请求。正如 JIRA 中所建议的,您可以使用脚本在不同的 settings.xml 之间轻松切换

至于回答标题中的问题:为了在m2e中轻松切换配置文件,我建议您从这个更新站点安装JBoss Tools Maven Profile Manager :http: //download.jboss.org/jbosstools/updates/stable/juno/

要在所有项目上启用相同的全局配置文件:

  • 在项目资源管理器视图中:选择所有maven项目 (Ctrl+A)
  • 点击 Ctrl+Alt+P 打开 Profile Mgmt 向导并选择要激活的配置文件。

这相当于在每个项目属性页面中手动设置活动的 maven 配置文件,这更加繁琐。

于 2013-01-07T11:12:46.923 回答
0

如果您已经在本地存储库中下载了工件,那么您可以使用mvn -o clean compile .... 这将避免远程存储库查找。

于 2013-01-07T09:07:59.300 回答