maven内部服务器(二) 共享java库

本文介绍通过maven内部服务器共享java库,即共享jar包的方法。

目录
1. java本地仓库说明
2. 创建本地仓库
3. 共享jar包
4. 引用jar包

1. java本地仓库说明

本文将介绍如何将(通过gradle构建的)java公共库通过nexus共享到服务器上,然后其他客户端就可以轻松的引用到该java公共库。

涉及到的内容可以分为三个部分: 第一部分:创建本地仓库。即,在nexus创建仓库。
第二部分:共享jar包。即,将jar包共享到nexus本地仓库中。
第三部分:引用jar包。即,使用"共享到nexus本地仓库中的jar包"。

2. 创建本地仓库

第1步 新建Hosted Repository

在Repositories中点击"Add",选择"Hosted Repository"。 如下图所示

img

第2步 编辑"新建的Hosted Repository"

选择新建的"Hosted Repository",此时它的名称是"New Hosted Repository"。选择它,然后点击"Configuration"。在Configuration中,只需要进行以下几项设置;

(1) Repository ID: 这是可以随意定义,只要不和已有的仓库ID重复即可。为了增加可读性,建议根据共享的jar包的名字来命名。
(2) Repository Name: 这个也是可以随意定义的。建议根据共享库的名字来命名。
(3) Povoder: 选择"Maven2"即可。
(4) Repository Policy: 选择"release"即可。
(5) Deployment Policy: 选择"Allow Redeploy(允许部署)"。

除了上面的几项之外,其他的不需要设置;然后,点击"Save"。

img

第3步 查看"新建的Hosted Repository"

点击"Save"之后,新建的"Hosted Repository"的名称就变成上面设置的"Repository ID的值"。点击该仓库,此时该仓库有"Repository Path"和"Default Local Storage Location"等值。

img

3. 共享jar包

下面介绍如何"将jar包共享到nexus本地仓库中"。

前面已经创建好了jar包本地仓库,下面介绍如何将jar包共享到本地仓库。
本文演示用的jar包已共享到github上,点击查看jar包的源码,这份源码也是本文的示例源码。


下面介绍"对于用户已有的jar包"如何修改,从而使它能被共享到nexus本地仓库。这里仅仅介绍通过gradle自动构建的jar包,对于通过ant或者maven构建的工程,这里不予介绍。

第1步 编辑jar包的build.gradle

编译jar包的build.gradle,添加以下内容:

apply plugin: 'maven'

def isReleaseBuild() {
    return VERSION_NAME.contains("SNAPSHOT") == false
}
def getRepositoryUsername() {
    return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
}
def getRepositoryPassword() {
    return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
}
afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = GROUP
                pom.artifactId = POM_ARTIFACT_ID
                pom.version = VERSION_NAME
                repository(url: RELEASE_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
                snapshotRepository(url: SNAPSHOT_REPOSITORY_URL) {
                    authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
                }
            }
        }
    }

    task sourceJar(type: Jar) {
        from sourceSets.main.allJava
    }
    artifacts {
         archives sourceJar
    }
}

说明:直接将该内容添加到build.gradle的末尾即可,不需要对上面的内容进行额外的修改!

第2步 编辑gradle.properties

编辑andriod公共库中的gradle.properties,添加以下内容。如果没有gradle.properties,则新建该文件。

## GROUP的值是自定义的。它表示群组;若要将该库发布的maven中,则它是库在maven中的groupId值。
GROUP=com.skw.java.util
## VERSION_NAME的值是自定义。它表示版本号;若要将该库发布的maven中,则它是库在maven中的版本号。
VERSION_NAME=0.0.1
## POM_ARTIFACT_ID的值是自定义。它表示artifactId;若要将该库发布的maven中,则它是库在maven中的artifactId。
POM_ARTIFACT_ID=MathLibrary

## 指定值。SNAPSHOT_REPOSITORY_URL是"库在nexus中的Repository Path的值"
SNAPSHOT_REPOSITORY_URL=http://127.0.0.1:8081/nexus/content/repositories/MathLib
## 指定值。RELEASE_REPOSITORY_URL是"库在nexus中Configuration栏的Default Local Storage Location的值"
RELEASE_REPOSITORY_URL=file:/home/project/skywang/opt/nexus/sonatype-work/nexus/storage/MathLib

## 指定值。nexus的用户名
NEXUS_USERNAME=admin
## 指定值。nexus的密码
NEXUS_PASSWORD=54wangkuiwu

说明:
(1) GROUP: 它的值是自定义的,建议取包名。
(2) VERSION_NAME: 它的值是自定义的,建议取库的版本号。
(3) POM_ARTIFACT_ID: 它的值是自定义的,建议取库的名称。
(4) SNAPSHOT_REPOSITORY_URL: 它必须是nexus中Repository Path的值。
(5) RELEASE_REPOSITORY_URL: 它必须是nexus中库的Configuration栏目中Default Local Storage Location的值。
(6) NEXUS_USERNAME: 它必须是nexus的用户名。
(7) NEXUS_PASSWORD: 它必须是nexus的密码。

第3步 共享jar包库

在jar包库下面运行gradle uploadArchives来共享库到nexus中。该指令正常运行的界面如下所示。

img

再回到nexus中,点击仓库的"Browse Storage",会发现里面有jar包。

img

这表示jar包被共享到nexus中!

4. 引用java包

下面介绍在其他的java工程中引用"上面共享到nexus中java公共库"的方法。

使用nexus中的java库,只需要在build.gradle中添加以下内容即可。

repositories {
    maven {
        // 本地服务器中WheelView仓库的路径
        url "http://127.0.0.1:8081/nexus/content/repositories/MathLib"
    }   
}

dependencies {
    // jar包的groudid等信息
    compile 'com.skw.java.util:MathLibrary:0.0.1'
}

点击查看使用jar包的示例的源码

by skywang
Previous     Next