• Unreal is funny !!!

Maven 部署总结

Java 站长 4年前 (2021-09-18) 1805次浏览 已收录 2个评论
文章目录[隐藏]

在公司里开发项目,有时需要单独开发一个jar包供 项目使用,需要发布到 远程maven仓库,这样方便下载,以nexus仓库为例。

1、本地 setting.xml 修改

nexus 仓库 可以上传jar包的是 maven-releases 和 maven-snapshots, maven-public 是 maven-releases和 maven-snapshots的聚合,是不能发布的。
Maven 会根据 jar 的版本号是否带 -SNAPSHOT 判断是 上传到 snapshots 或 release,
如果你要上传到 maven-releases,把版本号改成 1.0.0 这样的就好了。
maven-snapshots 可以重复以相同版本号发布,重复发布内容会进行覆盖。
maven-release一旦发布,不能再以相同版本号覆盖(会报错),只能进入管理页面手动删除,再进行发布。

<servers>
        <server>
            <id>nexus</id>
            <username>uname</username>
            <password>pass</password>
        </server>
        <server>
            <id>nexus-releases</id>
            <username>uname</username>
            <password>pass</password>
        </server>
        <server>
            <id>nexus-snapshots</id>
            <username>uname</username>
            <password>pass</password>
        </server>
    </servers>

2、项目 pom.xml 文件配置 deploy 时的远程仓库

<distributionManagement>
    <repository>
        <id>nexus-releases</id>
        <name>Nexus Release Repository</name>
        <url>http://nexus.demo.com/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus-snapshots</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://nexus.demo.com/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

3、打包并上传到远程仓库

mvn clean deploy -Dmaven.test.skip=true

如果你要把源代码也上传到仓库,方便使用者能在idea中点进源码,在项目pom文件中加上打包源码的插件

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

4、其他

手动上传 jar包文件到远程仓库

mvn deploy:deploy-file -DgroupId=com.demo.demo-project \
  -DartifactId=demo \
  -Dversion=1.0.0-SNAPSHOT \
  -Dpackaging=jar \
  -Dfile="D:\code\demo-project\target\demo-1.0.0-SNAPSHOT.jar" \
  -DrepositoryId=nexus \
  -Durl=http://nexus.demo.com/repository/maven-snapshots/

在多模块项目中只编译某个子模块和依赖的父模块(反应堆)

# 在 项目根 目录下
mvn clean package -pl sub-module-name -am -DskipTests=true  
# -am 代表只编译 -pl 列出的子模块和其依赖

本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Maven 部署总结
喜欢 (15)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(2)个小伙伴在吐槽
  1. 我看不懂,但我大受震撼 :sad:
    小蚬子042021-09-18 14:23 Reply Mac OS X | Chrome 93.0.4577.63
  2. Follow the blogger to do it again, learn, thank you
    PrivatProxy1662022-02-07 10:23 Reply Windows 10 | Chrome 90.0.4430.86