[{"data":1,"prerenderedAt":241},["ShallowReactive",2],{"archive-2015-2-1":3},{"title":4,"articles":5,"hot_article":26,"month_arch":89,"total":237,"cover":238},"2015年2月 - 独孤影的博客",[6,16],{"id":7,"title":8,"uri":8,"author":9,"tags":10,"created_at":13,"view_count":14,"content":15},31,"中文分词逆向最大匹配法项目实践","duguying",[11,12],"中文分词","逆向最大匹配法","2015-02-26 22:19:19",5877,"\u003Cp>最近在自己的项目中实现了中文分词，项目是pinyin-php，是一个用C语言完成的原生php扩展。\n其主要作用是将中文汉字翻译成汉语拼音，其中用到中文分词主要是为了识别多音字，因为多音字一般是在特定词语环境中出现的。\n因此系统需要识别汉字词语，也就是说要实现简单的分词，当然分词准确率越高的话多音字识别率也会越高。\u003Cbr\u002F>\u003C\u002Fp>\u003Cp>pinyin-php中实现中文分词达到识别多音字的目的，这一想法在pinyin-php上一版本开发的时候就已经想到了。只是自己从来都没有实践过，而且据别人说，中文分词用C语言实现起来比较麻烦，反倒是脚本语言实现起来比较方便。我多方查阅资料后知道现有中文分词方法有如下几种\u003C\u002Fp>\u003Col class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\">\u003Cli>\u003Cp>字符匹配\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>理解法\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>统计法\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp>其中字符匹配是基于字典的字符串匹配，理解法是在字符串匹配的同时还对句子进行语义分析，统计法是基于大量的语料库来实现的。其中字符匹配法最为简单，后两者首先是算法比较复杂，是我目前尚未接触到的方法，其次他们均要基于大量的语料库进行数据分析，这对于我以及pinyin-php这个项目来说是不现实的。不过对于搜索引擎这种大型的系统来说是可以实现的。因此，我采用字符匹配法。字符匹配又有如下四种方式\u003C\u002Fp>\u003Col class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\">\u003Cli>\u003Cp>正向最大匹配法(由左到右的方向);\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>逆向最大匹配法(由右到左的方向);\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>最少切分(使每一句中切出的词数最小);\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>双向最大匹配法(进行由左到右、由右到左两次扫描);\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp>上面四种字符匹配方法要算『双向最大匹配法』最为准确，由于汉语的特性，『逆向最大匹配法』比『正向最大匹配法』要更精确。\u003C\u002Fp>\u003Cp>pinyin-php采用的便是『逆向最大匹配法』。下面看个分词实例\u003C\u002Fp>\u003Cpre class=\"brush:plain;toolbar:false\">硕士研究生产\u003C\u002Fpre>\u003Cp>正向最大匹配法的结果会是『硕士研究生 \u002F 产』，而逆向最大匹配法利用逆向扫描，可得到正确的分词结果『硕士 \u002F 研究 \u002F 生产』。\u003C\u002Fp>\u003Cp>项目中有一个字词库，其实是我自己实现的一个hashtable，系统初始化的时候从字词库中读取汉字和词语以及其对应的汉语拼音。\u003C\u002Fp>\u003Cpre class=\"brush:plain;toolbar:false\">key,value\n一,yī\n丁,dīng\n七,qī\n万,wàn\n丈,zhàng\n三,sān\n上,shàng\n下,xià\n……\n阿Ｑ,āＱ\n阿爸,ābà\n阿鼻,ābí\n阿呆,ādāi\n阿弟,ādì\n阿爹,ādiē\n阿斗,ādǒu\n阿飞,āfēi\n阿哥,āgē\n……\u003C\u002Fpre>\u003Cp>假设hashtable中的key的最大长度为10个汉字，那么有一段文字，我首先从尾部开始截取10个汉字，放入buffer{10}中然后在hashtable中查buffer[1~10]，查到后就截取后续的10个汉字，未查到的话继续查字符串buffer[2~10]，未查到继续查buffer[3~10]，直到buffer[10]，例如若是在buffer[4~10]的时候查到了，则将buffer[1~3]退回段落的原处。匹配到的词直接总hashtable中读取其拼音如此便翻译出来了，若是查找不到则直接保持为原来的字符不变。\u003C\u002Fp>\u003Cpre class=\"brush:plain;toolbar:false\">分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。\n\nparagraph\t\t\t\t\t\t\t\tbuffer\t\t\t\t\tsegments\n分词就是将连续的字序列按照一定的规范重新\t\t组合成词序列的过程。\n分词就是将连续的字序列按照一定的规范重\t\t新组合成词序列的过程\t\t\u002F。\n分词就是将连续的字序列按照一定的规\t\t\t范重新组合成词序列的\t\t\u002F过程。\n分词就是将连续的字序列按照一定的\t\t\t\t规范重新组合成词序列\t\t\u002F的\u002F过程。\n分词就是将连续的字序列按照一\t\t\t\t定的规范重新组合成词\t\t\u002F序列\u002F的\u002F过程。\n分词就是将连续的字序\t\t\t\t\t\t列按照一定的规范重新\t\t\u002F组\u002F合成词\u002F序列\u002F的\u002F过程。\n分词就是将连续的\t\t\t\t\t\t\t字序列按照一定的规范\t\t\u002F重新\u002F组\u002F合成词\u002F序列\u002F的\u002F过程。\u003C\u002Fpre>\u003Cp>如果想了解我是如何编码实现的，欢迎参阅我的项目pinyin-php(\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fduguying\u002Fpinyin-php\" _src=\"https:\u002F\u002Fgithub.com\u002Fduguying\u002Fpinyin-php\">https:\u002F\u002Fgithub.com\u002Fduguying\u002Fpinyin-php\u003C\u002Fa>)。\u003Cbr\u002F>\u003C\u002Fp>",{"id":17,"title":18,"uri":18,"author":9,"tags":19,"created_at":23,"view_count":24,"content":25},30,"第一次发布项目到maven中央库",[20,21,22],"maven","中央库","项目发布","2015-02-25 15:54:30",6112,"\u003Cp>昨天晚上决定将java版的gojapi发布到maven中央库上，于是多方查阅资料后开始动手，期间遇到不少问题，结果弄到很晚都没弄成功，直到今天上午才成功的将其上传成功。现记录一下。\u003C\u002Fp>\u003Cp>\u003Cstrong>用到软件：\u003C\u002Fstrong>\u003Cbr\u002F>maven\u003Cbr\u002F>gpg4win-vanilla-2.2.3.exe\u003C\u002Fp>\u003Cp>\u003Cstrong>参考文档：\u003C\u002Fstrong>\u003Cbr\u002F>\u003Ca href=\"http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738#OSC_h3_11\" _src=\"http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738#OSC_h3_11\">http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738\u003C\u002Fa>\u003C\u002Fp>\u003Cp>\u003Cstrong>密钥对：\u003C\u002Fstrong>\u003Cbr\u002F>\u003C\u002Fp>\u003Cpre class=\"brush:bash;toolbar:false\">#&nbsp;生成密钥对\ngpg&nbsp;--gen-key\n#&nbsp;查看公钥\ngpg&nbsp;--list-keys\n#&nbsp;将公钥发布到&nbsp;PGP&nbsp;密钥服务器\ngpg&nbsp;--keyserver&nbsp;hkp:\u002F\u002Fpool.sks-keyservers.net&nbsp;--send-keys&nbsp;82DC852E\u003C\u002Fpre>\u003Cp>具体操作见参考文档。\u003C\u002Fp>\u003Cp>接下来就是修改配置和上传了，先不配置上传试试\u003Cbr\u002F>\u003C\u002Fp>\u003Cpre class=\"brush:bash;toolbar:false\">mvn&nbsp;clean&nbsp;deploy\u003C\u002Fpre>\u003Cp>\u003Cimg src=\"\u002F\u002Fduguying.oss-cn-qingdao.aliyuncs.com\u002F2015\u002F2\u002F25\u002Fmvn_401_error.png\" title=\"\" alt=\"mvn_401_error.png\"\u002F>\u003Cbr\u002F>401错误，未授权。接下来在mvn\u002Fconf\u002Fsetting.xml中填入用户名和密码。\u003Cbr\u002F>\u003C\u002Fp>\u003Cpre class=\"brush:xml;toolbar:false\">&lt;servers&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;server&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;oss&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;username&gt;duguying&lt;\u002Fusername&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;password&gt;xxxxxxxx&lt;\u002Fpassword&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fserver&gt;\n&lt;\u002Fservers&gt;\u003C\u002Fpre>\u003Cp>再次上传，只要pom.xml中的distributionManagement&gt;repository&gt;id与上面的id是一致的，便可上传成功。在oss管理的页面(\u003Ca href=\"https:\u002F\u002Foss.sonatype.org\" _src=\"https:\u002F\u002Foss.sonatype.org\">https:\u002F\u002Foss.sonatype.org\u003C\u002Fa>)close之后发现close失败。如下图\u003C\u002Fp>\u003Cp>\u003Cimg src=\"\u002F\u002Fduguying.oss-cn-qingdao.aliyuncs.com\u002F2015\u002F2\u002F25\u002Fmvn_oss_close_failed.png\" title=\"\" alt=\"mvn_oss_close_failed.png\"\u002F>\u003Cbr\u002F>按照上面提示，源码包缺失，文档包缺失，加密缺失，etc。这时应该在pom.xml的添加相关配置，下面是我完整的pom.xml文件\u003Cbr\u002F>\u003C\u002Fp>\u003Cpre class=\"brush:xml;toolbar:false\">&lt;project&nbsp;xmlns=&quot;http:\u002F\u002Fmaven.apache.org\u002FPOM\u002F4.0.0&quot;&nbsp;xmlns:xsi=&quot;http:\u002F\u002Fwww.w3.org\u002F2001\u002FXMLSchema-instance&quot;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation=&quot;http:\u002F\u002Fmaven.apache.org\u002FPOM\u002F4.0.0&nbsp;http:\u002F\u002Fmaven.apache.org\u002Fxsd\u002Fmaven-4.0.0.xsd&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;modelVersion&gt;4.0.0&lt;\u002FmodelVersion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;net.duguying.goj&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;gojapi&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;0.0.2&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;packaging&gt;jar&lt;\u002Fpackaging&gt;\n\t\n\t&lt;name&gt;goj&nbsp;judger&nbsp;client&nbsp;api&lt;\u002Fname&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Fgithub.com\u002Fgojudge\u002Fgojapi-java&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;description&gt;here&nbsp;is&nbsp;goj&nbsp;judger&nbsp;client&nbsp;api&nbsp;for&nbsp;java&lt;\u002Fdescription&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;inceptionYear&gt;2015&lt;\u002FinceptionYear&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;parent&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.sonatype.oss&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;oss-parent&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;7&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fparent&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;licenses&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;license&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;MIT&nbsp;License&lt;\u002Fname&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;http:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distribution&gt;repo&lt;\u002Fdistribution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Flicense&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Flicenses&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;downloadUrl&gt;https:\u002F\u002Foss.sonatype.org\u002Fcontent\u002Fgroups\u002Fpublic&lt;\u002FdownloadUrl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;oss&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;OSS&nbsp;Repository&nbsp;at&nbsp;sonatype&lt;\u002Fname&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Foss.sonatype.org\u002Fservice\u002Flocal\u002Fstaging\u002Fdeploy\u002Fmaven2&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Frepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;snapshotRepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;oss-sonatype-snapshots&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;OSS&nbsp;Snapshot&nbsp;Repository&nbsp;at&nbsp;sonatype&lt;\u002Fname&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Foss.sonatype.org\u002Fcontent\u002Frepositories\u002Fsnapshots&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002FsnapshotRepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002FdistributionManagement&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;scm&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;connection&gt;scm:git:git:\u002F\u002Fgithub.com\u002Fgojudge\u002Fgojapi-java.git&lt;\u002Fconnection&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;developerConnection&gt;scm:git:git@github.com:gojudge\u002Fgojapi-java.git&lt;\u002FdeveloperConnection&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Fgithub.com\u002Fgojudge\u002Fgojapi-java&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;tag&gt;HEAD&lt;\u002Ftag&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fscm&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;profiles&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;profile&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;release&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;build&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugins&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Source&nbsp;--&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;maven-source-plugin&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.2.1&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;executions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;execution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;package&lt;\u002Fphase&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;jar-no-fork&lt;\u002Fgoal&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fgoals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecutions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fplugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;Javadoc&nbsp;--&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;maven-javadoc-plugin&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.9.1&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;executions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;execution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;package&lt;\u002Fphase&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;jar&lt;\u002Fgoal&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fgoals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecutions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fplugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;!--&nbsp;GPG&nbsp;--&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;maven-gpg-plugin&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;1.5&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;executions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;execution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;verify&lt;\u002Fphase&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;sign&lt;\u002Fgoal&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fgoals&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecution&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fexecutions&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fplugin&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fplugins&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fbuild&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;distributionManagement&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;snapshotRepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;oss&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Foss.sonatype.org\u002Fcontent\u002Frepositories\u002Fsnapshots\u002F&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002FsnapshotRepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;repository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;oss&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url&gt;https:\u002F\u002Foss.sonatype.org\u002Fservice\u002Flocal\u002Fstaging\u002Fdeploy\u002Fmaven2\u002F&lt;\u002Furl&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Frepository&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002FdistributionManagement&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fprofile&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fprofiles&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;developers&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;developer&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;duguying&lt;\u002Fid&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;name&gt;duguying&lt;\u002Fname&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;email&gt;duguying2008@gmail.com&lt;\u002Femail&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdeveloper&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdevelopers&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;properties&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;project.build.sourceEncoding&gt;UTF-8&lt;\u002Fproject.build.sourceEncoding&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fproperties&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependencies&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;junit&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;junit&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;3.8.1&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;scope&gt;test&lt;\u002Fscope&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependency&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.httpcomponents&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;httpclient&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;4.4&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependency&gt;\n\t\t\n\t\t&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.httpcomponents&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;httpcore&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;4.4&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependency&gt;\n\t\t\n\t\t&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;commons-logging&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;commons-logging&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;1.2&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependency&gt;\n\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;dependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.json&lt;\u002FgroupId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;json&lt;\u002FartifactId&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;20131018&lt;\u002Fversion&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependency&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&lt;\u002Fdependencies&gt;\n\n&lt;\u002Fproject&gt;\u003C\u002Fpre>\u003Cp>有了profile里面的内容便可以解决上面的问题，不过要想上传成功必须保证\u003Cspan style=\"font-size: 12.5px;\">\u003Ccode>profiles&gt;profile&gt;distributionManagement&gt;snapshotRepository&gt;id\u003C\u002Fcode>和\u003C\u002Fspan>\u003Cspan style=\"font-size: 12.5px;\">\u003Ccode>profiles&gt;profile&gt;distributionManagement&gt;repository&gt;id\u003C\u002Fcode>同样与setting.xml里面的server&gt;id是一致的。否则就会报401错误。最后如下命令发布\u003Cbr\u002F>\u003C\u002Fspan>\u003C\u002Fp>\u003Cpre class=\"brush:bash;toolbar:false\">mvn&nbsp;clean&nbsp;deploy&nbsp;-P&nbsp;release\u003C\u002Fpre>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">这篇文章并没有详细的介绍如何将自己的java项目发布到maven中央库，而是描述了我发布的过程中遇到的问题，若想从头学习如何发布建议参考黄勇的博文&nbsp;\u003Ca href=\"http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738\" _src=\"http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738\">http:\u002F\u002Fmy.oschina.net\u002Fhuangyong\u002Fblog\u002F226738\u003C\u002Fa>&nbsp;。\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">maven 上传中\u003Cstrong>可能遇到的一些问题\u003C\u002Fstrong>：\u003C\u002Fspan>\u003C\u002Fp>\u003Col class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\">\u003Cli>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">gpg密钥丢失\u003Cbr\u002F>\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">我换了一台电脑或者重装系统之后原来的 gpg 密钥已经不复存在了咋办。不用担心，你可以重新生成新的gpg密钥并上传，使用新的 gpg 密钥是完全没有问题的。\u003Cbr\u002F>\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">\u003C\u002Fspan>\u003C\u002Fp>\u003C\u002Fli>\u003Cli>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">gpg密钥上传后验证失败\u003Cbr\u002F>\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">使用 --send-keys 上传了密钥之后，使用 --recv-keys 获取失败，或者偶尔成功偶尔失败，导致上传 maven 中央库后 close 操作后的 gpg 自动验证失败。此时你可以上传几个网络比较稳定的验证服务器作为备用服务器，例如 hkp:\u002F\u002Fkeyserver.ubuntu.com 。具体 maven 中央库支持哪些 pgp 服务器，可以从 gpg 验证报错信息中得出。\u003C\u002Fspan>\u003C\u002Fp>\u003C\u002Fli>\u003C\u002Fol>\u003Cp>\u003Cspan style=\"font-size: 12.5px;\">\u003C\u002Fspan>\u003C\u002Fp>",{"title":27,"list":28},"最热文章",[29,35,41,47,53,59,65,71,77,83],{"id":30,"title":31,"uri":32,"author":9,"created_at":33,"view_count":34},28,"docker容器目录与主机目录同步","\u002Farticle\u002Fdocker容器目录与主机目录同步","2014-12-31 12:34:08",15573,{"id":36,"title":37,"uri":38,"author":9,"created_at":39,"view_count":40},21,"beego中使用fis","\u002Farticle\u002Fbeego中使用fis","2014-12-03 10:47:56",9253,{"id":42,"title":43,"uri":44,"author":9,"created_at":45,"view_count":46},20,"用github登录，oauth开发","\u002Farticle\u002F用github登录，oauth开发","2014-11-23 13:33:37",9115,{"id":48,"title":49,"uri":50,"author":9,"created_at":51,"view_count":52},18,"windows服务注册工具nssm","\u002Farticle\u002Fwindows服务注册工具nssm","2014-10-31 21:34:39",9054,{"id":54,"title":55,"uri":56,"author":9,"created_at":57,"view_count":58},49,"用latex排版中文书籍","\u002Farticle\u002F用latex排版中文书籍","2016-10-31 11:12:02",8645,{"id":60,"title":61,"uri":62,"author":9,"created_at":63,"view_count":64},19,"texlive中文书签乱码","\u002Farticle\u002Ftexlive中文书签乱码","2014-11-15 02:54:01",8466,{"id":66,"title":67,"uri":68,"author":9,"created_at":69,"view_count":70},6,"Windows上的软件包管理器chocolatey","\u002Farticle\u002FWindows上的软件包管理器chocolatey","2014-08-10 15:55:22",8012,{"id":72,"title":73,"uri":74,"author":9,"created_at":75,"view_count":76},3,"利用开源和免费资源搭建CI环境","\u002Farticle\u002F利用开源和免费资源搭建CI环境","2014-07-04 16:54:58",7740,{"id":78,"title":79,"uri":80,"author":9,"created_at":81,"view_count":82},16,"php-fpm网站目录权限配置","\u002Farticle\u002Fphp-fpm网站目录权限配置","2014-10-18 01:36:10",7276,{"id":84,"title":85,"uri":86,"author":9,"created_at":87,"view_count":88},27,"sublime text 2插件开发，外部修改文件无法重新加载","\u002Farticle\u002Fsublime text 2插件开发，外部修改文件无法重新加载","2014-12-26 20:24:13",7055,{"title":90,"list":91},"按月归档",[92,96,99,102,105,108,111,115,119,122,125,128,132,135,138,142,145,148,151,155,158,161,164,167,170,173,176,179,182,185,188,191,194,197,200,203,206,209,212,215,219,222,225,228,231,234],{"title":93,"uri":94,"view_count":95},"2026年7月","\u002Farchive\u002F2026\u002F7\u002F1","[1]",{"title":97,"uri":98,"view_count":95},"2026年1月","\u002Farchive\u002F2026\u002F1\u002F1",{"title":100,"uri":101,"view_count":95},"2025年4月","\u002Farchive\u002F2025\u002F4\u002F1",{"title":103,"uri":104,"view_count":95},"2024年6月","\u002Farchive\u002F2024\u002F6\u002F1",{"title":106,"uri":107,"view_count":95},"2024年5月","\u002Farchive\u002F2024\u002F5\u002F1",{"title":109,"uri":110,"view_count":95},"2024年4月","\u002Farchive\u002F2024\u002F4\u002F1",{"title":112,"uri":113,"view_count":114},"2023年12月","\u002Farchive\u002F2023\u002F12\u002F1","[6]",{"title":116,"uri":117,"view_count":118},"2023年11月","\u002Farchive\u002F2023\u002F11\u002F1","[2]",{"title":120,"uri":121,"view_count":95},"2023年10月","\u002Farchive\u002F2023\u002F10\u002F1",{"title":123,"uri":124,"view_count":95},"2023年7月","\u002Farchive\u002F2023\u002F7\u002F1",{"title":126,"uri":127,"view_count":118},"2023年6月","\u002Farchive\u002F2023\u002F6\u002F1",{"title":129,"uri":130,"view_count":131},"2023年5月","\u002Farchive\u002F2023\u002F5\u002F1","[3]",{"title":133,"uri":134,"view_count":118},"2023年4月","\u002Farchive\u002F2023\u002F4\u002F1",{"title":136,"uri":137,"view_count":118},"2023年3月","\u002Farchive\u002F2023\u002F3\u002F1",{"title":139,"uri":140,"view_count":141},"2023年2月","\u002Farchive\u002F2023\u002F2\u002F1","[5]",{"title":143,"uri":144,"view_count":95},"2023年1月","\u002Farchive\u002F2023\u002F1\u002F1",{"title":146,"uri":147,"view_count":118},"2022年12月","\u002Farchive\u002F2022\u002F12\u002F1",{"title":149,"uri":150,"view_count":141},"2022年11月","\u002Farchive\u002F2022\u002F11\u002F1",{"title":152,"uri":153,"view_count":154},"2022年10月","\u002Farchive\u002F2022\u002F10\u002F1","[4]",{"title":156,"uri":157,"view_count":114},"2022年9月","\u002Farchive\u002F2022\u002F9\u002F1",{"title":159,"uri":160,"view_count":141},"2022年8月","\u002Farchive\u002F2022\u002F8\u002F1",{"title":162,"uri":163,"view_count":95},"2019年7月","\u002Farchive\u002F2019\u002F7\u002F1",{"title":165,"uri":166,"view_count":95},"2019年2月","\u002Farchive\u002F2019\u002F2\u002F1",{"title":168,"uri":169,"view_count":95},"2018年9月","\u002Farchive\u002F2018\u002F9\u002F1",{"title":171,"uri":172,"view_count":95},"2018年8月","\u002Farchive\u002F2018\u002F8\u002F1",{"title":174,"uri":175,"view_count":95},"2017年11月","\u002Farchive\u002F2017\u002F11\u002F1",{"title":177,"uri":178,"view_count":95},"2017年8月","\u002Farchive\u002F2017\u002F8\u002F1",{"title":180,"uri":181,"view_count":95},"2017年5月","\u002Farchive\u002F2017\u002F5\u002F1",{"title":183,"uri":184,"view_count":95},"2017年4月","\u002Farchive\u002F2017\u002F4\u002F1",{"title":186,"uri":187,"view_count":95},"2016年11月","\u002Farchive\u002F2016\u002F11\u002F1",{"title":189,"uri":190,"view_count":95},"2016年10月","\u002Farchive\u002F2016\u002F10\u002F1",{"title":192,"uri":193,"view_count":118},"2016年9月","\u002Farchive\u002F2016\u002F9\u002F1",{"title":195,"uri":196,"view_count":95},"2016年8月","\u002Farchive\u002F2016\u002F8\u002F1",{"title":198,"uri":199,"view_count":118},"2016年7月","\u002Farchive\u002F2016\u002F7\u002F1",{"title":201,"uri":202,"view_count":141},"2016年6月","\u002Farchive\u002F2016\u002F6\u002F1",{"title":204,"uri":205,"view_count":95},"2015年12月","\u002Farchive\u002F2015\u002F12\u002F1",{"title":207,"uri":208,"view_count":95},"2015年10月","\u002Farchive\u002F2015\u002F10\u002F1",{"title":210,"uri":211,"view_count":118},"2015年2月","\u002Farchive\u002F2015\u002F2\u002F1",{"title":213,"uri":214,"view_count":95},"2015年1月","\u002Farchive\u002F2015\u002F1\u002F1",{"title":216,"uri":217,"view_count":218},"2014年12月","\u002Farchive\u002F2014\u002F12\u002F1","[8]",{"title":220,"uri":221,"view_count":118},"2014年11月","\u002Farchive\u002F2014\u002F11\u002F1",{"title":223,"uri":224,"view_count":141},"2014年10月","\u002Farchive\u002F2014\u002F10\u002F1",{"title":226,"uri":227,"view_count":131},"2014年9月","\u002Farchive\u002F2014\u002F9\u002F1",{"title":229,"uri":230,"view_count":131},"2014年8月","\u002Farchive\u002F2014\u002F8\u002F1",{"title":232,"uri":233,"view_count":131},"2014年7月","\u002Farchive\u002F2014\u002F7\u002F1",{"title":235,"uri":236,"view_count":118},"2013年9月","\u002Farchive\u002F2013\u002F9\u002F1",2,{"url":239,"title":240},"https:\u002F\u002Fimage.duguying.net\u002F2022\u002F09\u002Fij6x8o4s.webp","老家 摄于2020年秋",1790781590476]