前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Maven Jar包制作与上传及基本使用

Maven Jar包制作与上传及基本使用

作者头像
lpe234
发布2020-07-27 17:29:28
1K0
发布2020-07-27 17:29:28
举报
文章被收录于专栏:若是烟花若是烟花

本文主要为以后Dubbo分布式系统搭建做准备 之前早的时候,仅使用Nexus OSS搭建Maven私服,并上传Maven仓库中没有的第三方Jar包,也上传过自己制作的Jar包。但是那会并没有考虑上传javadocsource包。

概要

新建Maven项目

整体结构如下

代码语言:javascript
复制
➜  core-api tree
.
├── core-api.iml
├── pom.xml
├── src
│   ├── main
│   │   ├── java
│   │   │   └── cn
│   │   │       └── lpe234
│   │   │           └── demo
│   │   │               ├── models
│   │   │               │   └── User.java
│   │   │               └── services
│   │   │                   └── UserService.java
│   │   └── resources
│   └── test
│       └── java
pom.xml 示例如下
代码语言:javascript
复制
<?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>
User.java 示例代码
代码语言:javascript
复制
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;
    }
}
UserService.java

切记:注释一定要详细准确!

代码语言:javascript
复制
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);

}

执行打包命令

代码语言:javascript
复制
# 如果执行成功,则可以在项目目录下面发现`target`文件夹。
➜  core-api mvn source:jar javadoc:jar repository:bundle-create

打包后的结构

代码语言:javascript
复制
# 已忽略二级以下的文件及文件夹
➜  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包。

插件打包

另外也可以使用Maven插件进行打包,增加以下内容到项目pom.xml文件 即可

代码语言:javascript
复制
<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>

本地安装

代码语言:javascript
复制
# 安装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 OSS私服

部署到网络服务器,其他用户才能够很方便的去下载使用和更新。

这块有一个重点:关于Nexus仓库的配置,需要将仓库设置为 Maven2(hosted) + Version policy(Snaphost/Mixed) + Deployment policy。版本如果为Release的话,发布SNAPSHOT时会报400错误。

使用命令行部署

并不推荐这个方法,对于javadoc, sources并没有上传成功,可能是参数写的有问题吧。以下命令可以正常上传jar。

代码语言:javascript
复制
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仓库。需要额外设置用户名及密码。

代码语言:javascript
复制
<!-- 在 ~/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节点,添加如下内容

代码语言:javascript
复制
<distributionManagement>
    <repository>
        <id>3rd_party</id>
        <name>3rd Party Repository</name>
        <url>http://nexus-xxxxxx/repository/3rd_mixed/</url>
    </repository>
</distributionManagement>

此时如果一切正常的话,执行

代码语言:javascript
复制
➜  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包了。

外部引用

由于: 已经将源码和文档上传,所以引用时,可选择下载源码。这样就能很方便的看到接口文档说明

代码语言:javascript
复制
<dependency>
    <groupId>cn.lpe234.demo</groupId>
    <artifactId>core-api</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

最后

这个流程终于走通了~ 为了更美好的明天而战~~ 艾欧尼亚不会灭亡~~~ 好吧,我去前面探探路~~~~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概要
    • 新建Maven项目
      • pom.xml 示例如下
      • User.java 示例代码
      • UserService.java
  • 执行打包命令
    • 打包后的结构
      • 插件打包
      • 本地安装
      • 部署到Nexus OSS私服
        • 使用命令行部署
          • 使用插件部署(推荐)
          • 外部引用
          • 最后
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档