一、无源码,直接以文件的形式发布jar包(deploy-file)
情况一:前提,有项目的pom文件(如果没有pom文件,可以从jar包中提取出来),自动出pom文件读取groupId等信息
(如果没有pom文件,可以看下面的情况二)
我已经写成了标准脚本,并经常使用,分享出来:
1、deploy-jar.bat
@echo off echo "=== start to deploy jar... ===" call mvn deploy:3.0.0-M1:deploy-file -X ^ -Durl=file:///D:/0sync-local/git/repository ^ -DrepositoryId=git-repo ^ -Dfile=./apollo-client-0.10.3-SNAPSHOT.jar ^ -DpomFile=./apollo-client-0.10.3-SNAPSHOT.pom ^ -Dsources=./apollo-client-0.10.3-SNAPSHOT-sources.jar :: -Djavadoc=./apollo-client-0.10.3-SNAPSHOT-javadoc.jar echo "=== deploy jar finished ... ===" pause
如果是远程仓库的话,将上面的url替换成远程仓库地址即可,例如
-Durl=http://10.2.10.22:8081/nexus/content/repositories/releases/
注意 pomFile 虽然也是可选,但是建议加上,否则无法自动识别依赖包,需要手动添加依赖。
2、deploy-pom.bat
@echo off echo "=== start to deploy pom... ===" call mvn deploy:deploy-file -X ^ -Durl=file:///D:/0sync-local/git/repository ^ -DrepositoryId=git-repo ^ -Dfile=./apollo-0.10.3-SNAPSHOT.pom ^ -DpomFile=./apollo-0.10.3-SNAPSHOT.pom ^ -Dpackaging=pom echo "=== deploy pom finished ... ===" pause
具体用法可以参见官方文档:
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploying-sources-javadoc.html
情况二:有无pom文件都可以,手动指定groupId等信息
deploy-jar.bat
@echo off :: **************************************************************************** :: Title : deploy jar to maven repositories :: :: Usage : 根据需要自己修改 :: :: Notes : :: 1. 参数pomFile、sources、javadoc为可选,但是建议都有 :: 2. 区分SNAPSHOT版本和RELEASE版本,repository和url不一样 :: 3. 参见官方文档:http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html :: 4. 建议使用 deploy-jar-func-version.bat ,更加方便。 :: :: Requires: Maven > mvn :: :: Returns: :: * :: Author: Zollty Tsou * :: Version: 1.0.0 * :: Date: 03/05/2016 * :: Link: https://github.com/zollty/tool-libs * :: **************************************************************************** echo "=== Start to deploy jars... ===" set releasesRepoId=pre-nexus-releases set releasesRepoUrl=http://10.2.10.22:8081/nexus/content/repositories/releases/ set snapshotsRepoId=pre-nexus-snapshots set snapshotsRepoUrl=http://10.2.10.22:8081/nexus/content/repositories/snapshots/ set base_dir=C:/Users/zollty/lib call mvn deploy:deploy-file ^ -DartifactId=api-base ^ -Dversion=1.1 ^ -DgroupId=org.zollty ^ -Dfile=%base_dir%/api-base-1.1.jar ^ -DpomFile=%base_dir%/pom.xml ^ -Dsources=%base_dir%/api-base-1.1-sources.jar ^ -Djavadoc=%base_dir%/api-base-1.1-javadoc.jar ^ -DrepositoryId=%releasesRepoId% -Durl=%releasesRepoUrl% call mvn deploy:deploy-file ^ -DartifactId=jretty-log ^ -Dversion=1.2-SNAPSHOT ^ -DgroupId=org.jretty ^ -Dfile=C:/Users/zollty/jretty-log-1.2-SNAPSHOT.jar ^ -DpomFile=%base_dir%/pom.xml ^ -Dsources=%base_dir%/jretty-log-1.2-SNAPSHOT-sources.jar ^ -Djavadoc=%base_dir%/jretty-log-1.2-SNAPSHOT-javadoc.jar ^ -DrepositoryId=%snapshotsRepoId% -Durl=%snapshotsRepoUrl% echo "=== deploy jars finished ... ===" pause
二、以源码的方式打包并发布
方法1:配置如下pom.xml,然后直接运行 mvn deploy
<distributionManagement> <repository> <id>git-repo</id> <url>file:///D:/0sync-local/git/repository</url> </repository> </distributionManagement>
方法2:不配置xml,直接在命令行配置仓库地址,如下:
mvn deploy -DaltDeploymentRepository=my-git-repo::default::file:///D:/0sync-local/git/repository
同上,如果是远程仓库的话,将上面的url替换成远程仓库地址即可,例如
-Durl=http://10.2.10.22:8081/nexus/content/repositories/releases/
三、如果要通过ssh或者ftp发布
只需要将上面的“file://”协议改一下,并引入额外的maven插件即可。
参见官方文档:http://maven.apache.org/plugins/maven-deploy-plugin/examples/deploy-ftp.html
四、利用git或者其他http服务搭建maven远程仓库
上面已经说了如何将jar包发布到本地目录,只需要把文件同步到git仓库即可。然后在pom.xml配置git仓库地址即可,例如:
<repositories> <repository> <id>zollty-git-repo</id> <url>https://raw.githubusercontent.com/zollty/maven-repo/master</url> </repository> </repositories>
还可以,建一个snapshots、releases的分支来分别存放snapshots、releases类型的jar包。
推荐这种用法,例如:
<repositories> <repository> <id>git-maven-repo-snapshots</id> <url>https://gitee.com/maven-repo/repository/raw/snapshots</url> </repository> <repository> <id>git-maven-repo-releases</id> <url>https://gitee.com/maven-repo/repository/raw/releases</url> </repository> </repositories>