关于Java:是否可以在命令行中添加Maven存储库?

关于Java:是否可以在命令行中添加Maven存储库?

Can I add maven repositories in the command line?

我知道我可以添加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还有其他好处。


推荐阅读

    linux命令行大全如何?

    linux命令行大全如何?,地址,命令,基础,工作,管理,单位,数据,标准,目录,文件,l

    linux命令行打开浏览?

    linux命令行打开浏览?,系统,网络,网址,工具,密码,首页,服务,网站,数据,地址,l

    linux开启命令行命令?

    linux开启命令行命令?,系统,单位,工具,电脑,首页,终端,情况,密码,权威,命令,l

    linux命令行模式登录?

    linux命令行模式登录?,系统,密码,信息,状态,情况,终端,环境,管理,电脑,位置,l

    linux链接网络命令行?

    linux链接网络命令行?,地址,系统,网络,工作,软件,工具,信息,密码,服务,标准,l

    linux退出的命令行?

    linux退出的命令行?,档案,状态,平台,系统,命令,名字,信息,编辑,模式,文件,lin

    linux命令行播放声音?

    linux命令行播放声音?,系统,设备,手机,电脑,软件,量化,数据,管理,首页,服务,l

    获取linux时间命令行?

    获取linux时间命令行?,时间,系统,信息,命令,工具,工作,代码,数据,服务,环境,L

    linux命令行切换规则?

    linux命令行切换规则?,密码,系统,软件,工具,工作,名称,目录,命令,界面,图形

    linux添加用户的命令?

    linux添加用户的命令?,密码,系统,软件,联系方式,用户,新增,信息,管理人员,

    linuxc关机命令行?

    linuxc关机命令行?,系统,状态,工作,命令,管理,用户,方式,终端,级别,参数,linu

    linux命令行创建组?

    linux命令行创建组?,系统,代码,密码,软件,用户组,用户,命令,选项,用户名,文

    linux命令行模式使用?

    linux命令行模式使用?,工作,地址,目录,信息,名称,系统,管理,命令,文件,标准,l

    linux添加网口命令?

    linux添加网口命令?,网络,系统,工具,信息,最新,设备,地址,工作,密码,数据,lin

    linux命令行路径补全?

    linux命令行路径补全?,系统,名称,软件,情况,命令,工具,智能,信息,不了,终端,l

    终端命令行安装linux?

    终端命令行安装linux?,软件,系统,工具,终端,工作,状态,公司,官网,中心,时间,l

    linux命令行输入取消?

    linux命令行输入取消?,系统,档案,命令,情况,管理,状态,信息,环境,百度,目录,L

    linux中命令行的if?

    linux中命令行的if?,工作,系统,工具,地址,基础,命令,地方,网络,信息,标准,lin

    linux命令行上下滑动?

    linux命令行上下滑动?,系统,工作,地址,信息,命令,目录,文件,不了,环境,预期,l

    linux更新安装命令行?

    linux更新安装命令行?,软件,系统,工作,在线,地址,名称,官网,命令,中心,情况,L