本文主要为之后Dubbo分布式系统搭建作准备java
以前早的时候,仅使用Nexus OSS搭建Maven私服,并上传Maven仓库中没有的第三方Jar包,也上传过本身制做的Jar包。可是那会并无考虑上传
javadoc
和source
包。node
总体结构以下git
➜ core-api tree . ├── core-api.iml ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ └── lpe234 │ │ │ └── demo │ │ │ ├── models │ │ │ │ └── User.java │ │ │ └── services │ │ │ └── UserService.java │ │ └── resources │ └── test │ └── java
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 模块总体配置 --> <groupId>cn.lpe234.demo</groupId> <artifactId>core-api</artifactId> <version>1.0-SNAPSHOT</version> <!-- 打包方式 --> <packaging>jar</packaging> <!-- 名称、描述、连接 (文档打包须要,简要配置便可) --> <name>core-api</name> <description>demo core-api</description> <url>http://lpe234.cn/demo/core-api</url> <!-- 证书配置 (内部使用,无需过多考虑) --> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <!-- 软件配置管理 (内部使用,替换代码仓库地址便可) --> <scm> <connection>scm:git:git://gitlab.com/lpe234/core-api.git</connection> <url>http://gitlab.com/lpe234/core-api.git</url> <developerConnection>scm:git:git://gitlab.com/lpe234/core-api.git</developerConnection> </scm> </project>
package cn.lpe234.demo.models; /** * 用户类 * Created by lpe234 on 2017/10/25. */ public class User { private Long uid; private String username; private Integer age; public Long getUid() { return uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
切记:注释必定要详细准确!apache
package cn.lpe234.demo.services; import cn.lpe234.demo.models.User; /** * 用户相关服务接口 * Created by lpe234 on 2017/10/25. */ public interface UserService { /** * 用户是否有效 * @param uid 用户ID * @return true: 有效, false: 无效 */ boolean isValid(Long uid); /** * 根据uid获取用户信息 * @param uid 用户ID * @return 返回用户信息 */ User getByUid(Long uid); }
# 若是执行成功,则能够在项目目录下面发现`target`文件夹。 ➜ core-api mvn source:jar javadoc:jar repository:bundle-create
# 已忽略二级如下的文件及文件夹 ➜ core-api tree -L 2 . ├── core-api.iml ├── pom.xml ├── src │ ├── main │ └── test └── target ├── apidocs ├── classes ├── core-api-1.0-SNAPSHOT-bundle.jar ├── core-api-1.0-SNAPSHOT-javadoc.jar ├── core-api-1.0-SNAPSHOT-sources.jar ├── core-api-1.0-SNAPSHOT.jar ├── javadoc-bundle-options ├── maven-archiver └── maven-status 9 directories, 6 files
此时已经获得 core-api-1.0-SNAPSHOT-javadoc.jar
, core-api-1.0-SNAPSHOT-sources.jar
, core-api-1.0-SNAPSHOT.jar
三个关键jar包。api
另外也可使用Maven插件进行打包,增长如下内容到项目pom.xml文件 便可bash
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.10.4</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
# 安装jar包 ➜ core-api mvn install:install-file -Dfile=target/core-api-1.0-SNAPSHOT.jar -DgroupId=cn.lpe234.demo -DartifactId=core-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar # 安装source包 ➜ core-api mvn install:install-file -Dfile=target/core-api-1.0-SNAPSHOT.jar -DgroupId=cn.lpe234.demo -DartifactId=core-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dclassifiler=sources # 安装javadoc包 ➜ core-api mvn install:install-file -Dfile=target/core-api-1.0-SNAPSHOT.jar -DgroupId=cn.lpe234.demo -DartifactId=core-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Dclassifiler=javadoc
部署到网络服务器,其余用户才可以很方便的去下载使用和更新。服务器
这块有一个重点:关于Nexus仓库的配置,须要将仓库设置为 Maven2(hosted) + Version policy(Snaphost/Mixed) + Deployment policy。版本若是为Release的话,发布SNAPSHOT时会报400错误。网络
并不推荐这个方法,对于javadoc, sources并无上传成功,多是参数写的有问题吧。如下命令能够正常上传jar。maven
mvn deploy:deploy-file -Dfile=target/core-api-1.0-SNAPSHOT.jar -DgroupId=cn.lpe234.demo -DartifactId=core-api -Dversion=1.0-SNAPSHOT -Dpackaging=jar -Durl=http://nexus-xxxxxx/repository/3rd_mixed/ -DrepositoryId=3rd_mixed
对于须要进行权限验证的Maven仓库。须要额外设置用户名及密码。分布式
<!-- 在 ~/m.2/settings.xml 中, services 节点添加一个 server node,注意 <id> 的惟一识别性 --> <servers> <server> <id>3rd_mixed</id> <username>hj</username> <password>hj123456</password> </server> </servers>
在项目的 pom.xml
中的 project
节点,添加以下内容
<distributionManagement> <repository> <id>3rd_party</id> <name>3rd Party Repository</name> <url>http://nexus-xxxxxx/repository/3rd_mixed/</url> </repository> </distributionManagement>
此时若是一切正常的话,执行
➜ core-api git:(master) ✗ mvn deploy [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building core-api 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plug ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.155 s [INFO] Finished at: 2017-10-25T15:51:34+08:00 [INFO] Final Memory: 25M/255M [INFO] ------------------------------------------------------------------------
去查看Nexus仓库,就能够找到刚刚上传的Jar包了。
因为: 已经将源码和文档上传,因此引用时,可选择下载源码
。这样就能很方便的看到接口文档说明
。
<dependency> <groupId>cn.lpe234.demo</groupId> <artifactId>core-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
这个流程终于走通了~ 为了更美好的明天而战~~ 艾欧尼亚不会灭亡~~~ 好吧,我去前面探探路~~~~