本文主要爲之後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>
這個流程終於走通了~ 爲了更美好的明天而戰~~ 艾歐尼亞不會滅亡~~~ 好吧,我去前面探探路~~~~