maven多仓库配置,私服等

需求

公司有私服,需要配置多个数据源,去不同的位置下载不同的包。

一些项目更新后,上传到私服上面,如何配置,直接打包上传到私服。

配置

多mirrors配置

<mirror>
            <id>mirror</id>
            <mirrorOf>!rdc-releases,!rdc-snapshots</mirrorOf>
            <name>mirror</name>
            <url>https://maven.aliyun.com/nexus/content/groups/public</url>
        </mirror>
        <mirror>
            <id>central</id>
            <mirrorOf>aliyun</mirrorOf>
            <name>mirror</name>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
        </mirror>
        <mirror>
			<id>nexus-osc</id>
			<mirrorOf>hangtian</mirrorOf>
			<name>Nexus osc</name>
			<url>http://maven.hangtian123.com.cn/nexus/content/groups/public/</url>
		</mirror>
        <mirror>
			<id>nexus-osc</id>
			<mirrorOf>hangtian2</mirrorOf>
			<name>Nexus osc</name>
			<url>http://maven.hangtian123.com.cn/nexus/content/repositories/ccservice/</url>
		</mirror>

注意

  • 该配置只是方便多个仓库进行切换而已,不能真正达到多仓库的效果。maven不管配置多少个仓库,只有第一个会生效的。如果第一个连接不上,才会到第二个。

  • mirrorOf 一定不能为* 否则下面就不能自动切换仓库去下载不同环境的jar包了,默认将*当做了中央仓库

  • id 一定不能为central 和上面一样的道理。central是中央仓库的id,如果配置上去,中央仓库就不能用了。

指定jdk版本

<profile>
            <id>jdk-1.8</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
            </properties>
        </profile>

配置私服仓库

profile>
            <id>private</id>
            <repositories>
                <repository>
                    <id>rdc-releases</id>
                    <url>https://repo.rdc.aliyun.com/repository/131585-release-c3Uksj/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>rdc-snapshots</id>
                    <url>https://repo.rdc.aliyun.com/repository/131585-snapshot-m8BIJZ/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>rdc-releases</id>
                    <url>https://repo.rdc.aliyun.com/repository/131585-release-c3Uksj/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                </pluginRepository>
                <pluginRepository>
                    <id>rdc-snapshots</id>
                    <url>https://repo.rdc.aliyun.com/repository/131585-snapshot-m8BIJZ/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

配置公司私服

<profile>
            <id>company</id>
            <repositories>
                <repository>
                    <id>ccservice</id>
                    <url>http://maven.hangtian123.com.cn/nexus/content/repositories/ccservice</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                </repository>
                <repository>
                    <id>hangtian</id>
                    <url>http://maven.hangtian123.com.cn/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>hangtian</id>
                    <url>http://maven.hangtian123.com.cn/nexus/content/repositories/ccservice/</url>
                </pluginRepository>
            </pluginRepositories>
        </profile>

配置阿里云仓库

<profile>
            <id>aliyun</id>
            <repositories>
                <repository>
                    <id>aliyun</id>
                    <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>aliyun</id>
                    <url>https://maven.aliyun.com/nexus/content/groups/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>

激活上面的配置

<activeProfiles>
        <activeProfile>aliyun</activeProfile>
        <activeProfile>private</activeProfile>
        <activeProfile>company</activeProfile>
    </activeProfiles>

代码形式实现多仓库地址配置

<pluginRepositories>
        <!--私服-->
        <pluginRepository>
            <id>rdc-releases</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-release-c3Uksj/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
        <pluginRepository>
            <id>rdc-snapshots</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-snapshot-m8BIJZ/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
        <!--公司-->
        <pluginRepository>
            <id>hangtian</id>
            <url>http://maven.hangtian123.com.cn/nexus/content/repositories/ccservice/</url>
        </pluginRepository>
        <!--阿里云-->
        <pluginRepository>
            <id>aliyun</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

    <repositories>
        <!--私服-->
        <repository>
            <id>rdc-releases</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-release-c3Uksj/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>rdc-snapshots</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-snapshot-m8BIJZ/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <!--公司-->
        <repository>
            <id>ccservice</id>
            <url>http://maven.hangtian123.com.cn/nexus/content/repositories/ccservice</url>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
        <repository>
            <id>hangtian</id>
            <url>http://maven.hangtian123.com.cn/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <!--阿里云-->
        <repository>
            <id>aliyun</id>
            <url>https://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

配置私服打包身份校验

<servers>
        <server>
            <id>rdc-releases</id>
            <username>GSt5gs</username>
            <password>******</password>
        </server>
        <server>
            <id>rdc-snapshots</id>
            <username>GSt5gs</username>
            <password>******</password>
        </server>
    </servers>

配置本地仓库地址

<localRepository>F:\mvn_rep</localRepository>

配置代理

<proxies>
        <proxy>
            <id>my-prosy</id>
            <!-- active为true时,该代理被激活 -->
            <active>true</active>
            <!-- 代理协议 -->
            <protocol>http</protocol>
            <!-- 主机名 -->
            <host>127.0.0.1</host>
            <!-- 端口 -->
            <port>8080</port>
            <!--
            <!-- 如果需要认证,就放开用户名和密码 -->
            <username>admin</username>
            <password>pass</password>
            <!-- 指定哪些主机名不需要代理,用|分隔。支持*号通配符 -->
            <nonProxyHosts>repository.com|*.google.com</nonProxyHosts>
            -->
        </proxy>
    </proxies>

项目中配置上传配置

<distributionManagement>
        <repository>
            <!--此处id和上面server的id保持一致-->
            <id>rdc-releases</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-release-c3Uksj/</url>
        </repository>
        <snapshotRepository>
            <id>rdc-snapshots</id>
            <url>https://repo.rdc.aliyun.com/repository/131585-snapshot-m8BIJZ/</url>
        </snapshotRepository>
    </distributionManagement>

常用命令

  • mvn clean 说明: 清理项目生产的临时文件,一般是模块下的target目录

  • mvn package 说明: 项目打包工具,会在模块下的target目录生成jar或war等文件

  • mvn install 说明: 模块安装命令 将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用 -Dmaven.test.skip=true 跳过测试(同时会跳过test compile)

  • mvn test 说明: 测试命令,或执行src/test/java/下junit的测试用例

  • mvn deploy 说明: 发布命令 将打包的文件发布到远程参考,提供其他人员进行下载依赖 ,一般是发布到公司的私服

Maven站点报表

  • mvn project-info-reports:dependencies 生成项目依赖的报表

  • mvn dependency:resolve 查看依赖

  • mvn dependency:tree 查看项目依赖情况 打印出项目的整个依赖树

  • mvn dependency:analyze 帮助你分析依赖关系, 用来取出无用, 重复依赖的好帮手

  • mvn install -X 追踪依赖的完整轨迹

生命周期

resource->compile->process-classes->process-test-resources->test-compile->test->prepare-package->package

  • resources:resources 绑定在resource处理阶段, 用来将src/main/resources下或者任何指定其他目录下的文件copy到输出目录中
  • resources:testResources 将test下的resources目录或者任何指定其他目录copy到test输出目录下
  • compiler:testCompile 将测试类编译(包括copy资源文件)
  • surefire:test 运行测试用例
  • jar:jar 打jar包

各种范围

  • compile(编译范围) compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。

  • provided(已提供范围) provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果你开发了一个web应用,你可能在编译classpath中需要可用的Servlet API来编译一个servlet,但是你不会想要在打包好的WAR中包含这个

  • Servlet API; 这个Servlet API JAR由你的应用服务器或者servlet容器提供。已提供范围的依赖在编译classpath(不是运行时)可用。它们不是传递性的,也不会被打包。

  • runtime(运行时范围) runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。

  • test(测试范围) test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。

  • system(系统范围) system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven也不会在仓库中去寻找它。。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注意该范围是不推荐使用的(你应该一直尽量去从公共或定制的Maven仓库中引用依赖)。

如果有遗漏的,欢迎评论补充。如果有比较好的站点推荐,欢迎留言,稳定可靠的网站有机会进入友链区哟

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的喵o

请作者吃包辣条可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值