2013-01-07 35 views
2

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

目前我使用下面的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不会抱怨超时?

回答

3

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

实际上同样的事情适用于交换上下文,例如,为Git改变.gitconfig文件,所以你可以将所有这些文件的变化打包成一个脚本或不同的分支在混帐或任何..

此外,它可以帮助本地运行Nexus,并连接到它,并让它反过来代理所有的外部回购。

2

我可以建议的最好的方式是使用Git/SVN /并检入settings.xml文件并使用不同的分支来分隔公司和家庭。二者必选其一

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

git checkout company 
git checkout home 

配置文件将无法正常工作引起的mirrorOf部分不能被放入一个轮廓区域。可以通过配置对话框更改m2e。但是这可能会导致与命令行不一致。

0

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

+0

这不是一个真正的解决方案,因为大多数情况下我需要下载一些东西...... – asgoth

1

不幸的是,配置文件中无法配置镜像。这对于maven有一个开放的request。正如JIRA中所建议的那样,您可以使用脚本轻松切换不同的设置。文件名称中的问题:要在m2e中轻松切换配置文件,我建议您从此更新站点安装JBoss Tools Maven Profile Managerhttp://download.jboss.org/jbosstools/updates/stable/juno/

要启用所有的项目相同的全局配置文件(S):

    在Project Explorer视图
  • :选择所有行家项目(按Ctrl + A)
  • 按Ctrl + Alt + P打开Profile Mgmt向导,然后选择要激活的配置文件。

这相当于在每个项目属性页面中手动设置活动的maven配置文件,这是比较单调乏味的。

相关问题