由于项目需要,想自己建立骨架,便于大家在同一个骨架下开发,便决定自己写骨架并发布到maven仓库,写好后网上查了好多都发布不成功,反复多次终于成功,总结两个原因。
1.pom文件的distributionManagement节点下的releases和snapshots节点id一定要和.m2/setting.xml中的server节点的id一样
2.m2/setting.xml中的server节点的用户名密码一定要正确,建议用deployment
3.在nexus的Repositories中的Releases、Snapshots的配置Deployment Policy控制是否可以重新覆盖版本发布
4.一直没成功的原因:发布骨架项目时,需要在骨架项目的pom文件添加distributionManagement节点
5.发布项目代码到仓库时候一定要指定plugin的jdk版本
下面说明如何发布骨架项目:
1.配置好maven\conf目录下settings.xml文件的<servers>段
<servers> <server> <id>nexus-3rd</id> <username>deployment</username> <password>deployment123</password> </server> <server> <id>snapshots</id> <username>deployment</username> <password>deployment123</password> </server> <server> <id>releases</id> <username>deployment</username> <password>deployment123</password> </server> </servers>
2.在要生成archetype项目上点右键,运行方式 -> Maven clean,清理一下项目
3.配置项目pom文件插件
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-archetype-plugin</artifactId> <version>2.2</version> </plugin>
3.点击Maven build...,在goal栏填写archetype:create-from-project,并运行
4.生成成功后,打开项目目录下的target\generated-sources\archetype\pom.xml文件,加入(如果发布项目的jar包,项目的pom文件也需要加入)
<distributionManagement> <repository> <id>releases</id> <name>bazaar releases</name> <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <name>bazaar snapshots</name> <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
5.打开系统控制台,进入项目目录下的target\generated-sources\archetype\,运行mvn deploy
提示build success的话,你的archetype就上传到服务器了,默认的artifactId就是原来项目的artifactId加上-archetype
最后,要生成脚本bat或shell
shell
mvn --version mvn archetype:generate -B \ -DarchetypeCatalog=http://127.0.0.1:8081/nexus/content/repositories/releases/ \ -DarchetypeGroupId=com.hpe.bazaar \ -DarchetypeArtifactId=bazaar-order-archetype \ -DarchetypeVersion=1.0.0 \ -DgroupId=com.hpe.bazaar.product \ -DartifactId=bazaar-product \ -Dversion=1.0-SNAPSHOT
bat
mvn --version mvn archetype:generate -B ^ -DarchetypeCatalog=http://127.0.0.1:8081/nexus/content/repositories/releases/ ^ -DarchetypeGroupId=com.hpe.bazaar ^ -DarchetypeArtifactId=bazaar-order-archetype ^ -DarchetypeVersion=1.0.0 ^ -DgroupId=com.hpe.bazaar.product ^ -DartifactId=bazaar-product ^ -Dversion=1.0-SNAPSHOT