我可以在命令行中添加maven存储库吗?

Sin*_*son 63 java build-process maven-2

我知道我可以添加maven存储库来获取〜/ .m2/settings.xml中的依赖项.但是可以使用命令行添加存储库,例如:

mvn install -Dmaven.repository=http://example.com/maven2
Run Code Online (Sandbox Code Playgroud)

我想这样做的原因是因为我使用的是持续集成工具,我可以完全控制它用来调用maven的命令行选项,但是为运行集成工具的用户管理settings.xml有点麻烦.

Ric*_*ler 68

你可以做到这一点,但你可能会更好地在POM中这样做,正如其他人所说的那样.

在命令行上,您可以指定本地存储库的属性,以及远程存储库的另一个存储库.远程存储库将具有所有默认设置

以下示例指定了两个远程存储库和一个自定义本地存储库.

mvn package -Dmaven.repo.remote=http://www.ibiblio.org/maven/,http://myrepo 
  -Dmaven.repo.local="c:\test\repo"
Run Code Online (Sandbox Code Playgroud)

  • 在 Maven 3 中不起作用。我找不到在较新的 Maven 中从命令行设置远程存储库的选项 (21认同)
  • 看起来这对maven2不起作用,或者我错了? (11认同)
  • 这对于在发布之前测试封闭的 sonatype 存储库很有用。 (2认同)
  • 如何指定遥控器的用户名和密码? (2认同)
  • 也可以定义 MAVEN_OPTS 变量,这样你就不需要在每次调用 run maven 时定义 -Dmaven.repo.local。 (2认同)
  • 您还可以定义MAVEN_OPTS变量,以避免每次运行maven时都设置此参数.有关示例,请参见http://stackoverflow.com/questions/16591080/maven-alternative-m2-directory/16591838#16591838. (2认同)

ddi*_*rov 7

Maven't Project Object Model(POM)的目标之一是捕获可靠地再现工件所需的所有信息,因此强烈建议不要传递影响工件创建的设置.

要实现您的目标,您可以使用每个项目签入用户级settings.xml文件,并使用-s(或--settings)选项将其传递给构建.


Jor*_*ira 6

我不确定是否可以使用命令行来完成。另一方面,您可以按照以下示例在pom.xml中添加存储库。使用这种方法,您无需更改〜/ .m2 / settings.xml文件。

    <?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>
Run Code Online (Sandbox Code Playgroud)