步骤如下。
- 注册 Sonatype OSSRH。例如我的是这样的。注意密码稍后要放在 XML 中,所以特殊字符不要使用
&
(需要转义),用@
就好。 - 填写工单。写好之后有工作人员问你是否拥有该域名,你回答 yes 即可
- 完善
pom.xml
。把你要分享的项目的pom.xml
有关信息完善,然后加入一堆 插件(参考官方文档) - 修改 maven 配置。为了省事,使用 eclipse 自带的 maven。但是没有
settings.xml
,没关系啊,官网下一个 maven,把里面的setting.xml
复制到.m2
目录下面。添加下面的节点
<server>
<id>ossrh</id>
<username>sp42(OSSRH 账号)</username>
<password>OSSRH 密码</password>
</server>
- 加密下载 gpg 工具,生成 Passphase,上传。需要在
.gnup
文件夹下增加两个配置,mac下在~/.gnup
下增加 gpg.conf 和 gpg-agent.conf 两个文件夹,其中分别在 gpg-agent.conf 中添加allow-loopback-pinentry
,在 gpg.conf 添加use-agent pinentry-mode loopback
- 执行 maven。因为使用 eclipse 自带的缘故,所以会找不到相关环境变量。好在可以手动添加,
JAVA_HOME > /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
PATH-->/usr/local/bin
Maven 问题备忘
-
本地依赖 Web 项目有问题,纯 java 项目没问题,“比方说两个项目A,B在一个eclipse workspace下,A需要引用B,当B close掉,A会去本地仓库引用B的jar包,这没问题,当B open时,A貌似也B的工程引进来了” https://www.cnblogs.com/jinguangguo/p/maven.html 对策:使用 war 类型依赖dependency type war 就可以实现war包依赖,B依赖A,打包的时候就会把A的classes以及文件打进去 参见:http://blog.csdn.net/u011666411/article/details/77160907 http://blog.csdn.net/sxhong/article/details/72869359
-
出现 “Updating status for Tomcat v6.0 Server at localhost…”. java.lang.NullPointerException 原来是 maven 依赖本地包有问题,把本地包去掉就正常,但这不合理。然后发现其实工程目录结构问题。盖因没用 meavn 之前一直都是 eclipse 默认的 WebContent 目录,转为 meavn 目录懒得转过来,而且在没有做工程聚合的时候也是正常的,后来添加聚合,就发生这莫名其妙 tomcat 问题,后来改为 meavn 推荐的目录,就ok了
http://central.sonatype.org/pages/ossrh-guide.html
https://www.cnblogs.com/gaoxing/p/4359795.html
https://www.cnblogs.com/wxisme/p/8728008.html
https://www.cnblogs.com/zhongshengzhen/p/nexus_maven.html
https://oss.sonatype.org
http://maven.aliyun.com/nexus/#welcome
今日遇到几个问题
1、GPG 证书。原先是在 Mac 搞的,后来换到 win 上,就要导出私钥证书,导出私钥:gpg -o 私钥文件名 --export-secret-keys
用户名。然后在 win 下面导入即可
2、上传成功了但最后 close 时显示规则不通过,可能是你的 pom.xml 缺少某些字段,如
<url>http:// </url>
3、最后 close 问题
不知道什么问题,应该是 Maven Nexus 后台问题,上传成功了很久才能 close,以至本地认为超时。其实后台是可以跑完成功的,只是很慢。
4、最后找到原因了,是我设置了 Maven 父项目,父项目在本地,没有提交中央库,后台解析 pom.xml 找不到父项目失败!
可以在网页观察上传进度。
http://search.maven.org/ 同步也比以前慢得多,http://mvnrepository.com/ 的话则更慢了。
Javadoc @ JDK1.8 问题
忽略就可以了。发现 插件 版本不能太新,3.0.1不行,改 2.9.1就行
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>2.10.2</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<configuration> <!-- add this to disable checking -->
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>
</execution>
</executions>
</plugin>
https://www.locked.de/how-to-ignore-maven-javadoc-errors-in-java-8/
EDIT 2019-6-24: Java 编译器不支持某些语法,例如注解上面使用常量,
会出现 “Compilation Error” 编译不通过的问题,解决方法:
1、不用常量;
2、更改编译器为 Eclipse 的:
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerId>eclipse</compilerId>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-eclipse</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
</plugin>
</plugins>
忽略一下提示的 IDE 错误,即可顺利编译。参考错误详情:https://my.oschina.net/u/347227/blog/1545915