我知道我可以添加Maven存储库以获取?/ .m2 / settings.xml中的依赖项。但是是否可以使用命令行添加存储库,例如:
1
| mvn install -Dmaven.repository=http://example.com/maven2 |
之所以要这样做,是因为我正在使用一个持续集成工具,在该工具中我可以完全控制它用于调用maven的命令行选项,但可以为运行该集成工具的用户管理settings.xml。有点麻烦。
您可以执行此操作,但是最好像其他人所说的那样在POM中执行。
在命令行上,您可以为本地存储库指定一个属性,为远程存储库指定另一个存储库。远程存储库将具有所有默认设置,但
下面的示例指定了两个远程存储库和一个自定义本地存储库。
1 2 3
| mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo
-Dmaven.repo.local="c:\\test\
epo" |
Maven't项目对象模型(POM)的目标之一是捕获可靠地复制工件所需的所有信息,因此强烈建议不要通过影响工件创建的设置。
要实现您的目标,您可以在每个项目中检入用户级别的settings.xml文件,并使用-s(或--settings)选项将其传递给构建。
我不确定是否可以使用命令行来完成。另一方面,您可以按照以下示例在pom.xml中添加存储库。使用这种方法,您无需更改?/ .m2 / settings.xml文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
...
<repositories>
<repository>
<id>MavenCentral</id>
<name>Maven repository</name>
<url>http://repo1.maven.org/maven2</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
...
<repository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
...
<pluginRepositories>
<pluginRepository>
<id>apache.snapshots</id>
<name>Apache Snapshot Repository</name>
<url>
http://people.apache.org/repo/m2-snapshot-repository
</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
<pluginRepository>
<id>Codehaus Snapshots</id>
<url>http://snapshots.repository.codehaus.org/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
...
</project> |
在这里我假设您是在问这个问题,因为您偶尔会想在构建中添加一个新的第三方存储库。我当然可能错了...:)
在这种情况下,您最好的选择是使用托管代理,例如工件或联系。然后在settings.xml中进行一次更改,以将其设置为世界的镜像。
从那时起,您需要添加的任何第三方存储库都可以通过代理进行处理。
为
@乔治·费雷拉
已经说过将您的存储库定义放在pom.xml中。适当地使用配置文件来选择要通过命令行使用的存储库:
1 2 3
| mvn deploy -P MyRepo2
mvn deploy -P MyRepo1 |
我以前还没有真正使用过maven 2,由于maven 2的某些问题,我们的系统仍在maven 1.x上运行。
但是,看一下maven 2的文档,似乎并没有类似的特定系统属性。但是,您可能可以使用System属性将其内置到poms /设置中。请参阅此http://maven.apache.org/settings.html
的系统属性部分
因此,您将在设置文件中包含$ {maven.repository},然后像上面一样使用-Dmaven.repository。
我不确定这是否行得通,但是通过一些调整,我确定您可以提出一些建议。
创建具有所需存储库设置的POM,然后在项目POM中使用父元素来继承其他存储库。当一组项目属于一个团队时,使用"组织" POM还有其他好处。