# maven-publish plugin

可以参阅官方详解[官方详解](https://docs.gradle.org/current/userguide/publishing_maven.html)

## 1. 搭建nexus私服

### 1-1. 官网下载安装包

官网地址：<https://www.sonatype.com/download-oss-sonatype> \[root\@slave1 bin]# wget <https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.7.1-02-unix.tar.gz>

### 1-2. 解压

\[root\@slave1 bin]# mkdir -p /home/nexus \[root\@slave1 bin]# tar -zxvf nexus-3.7.1-02-unix.tar.gz -C /home/nexus/

### 1-3. 运行

\[root\@slave1 bin]# cd nexus-3.7.1-02/bin/ \[root\@slave1 bin]# ./nexus start

### 1-4. 浏览器访问

<http://172.18.115.187:8081/> 默认用户名：admin 默认密码：admin123

## 2. gradle插件上传jar包

创建一个独立的gradle文件upload.gradle

build.gradle引入upload.gradle文件

apply from: 'upload.gradle'

### 2-1. maven-publish插件

```groovy
apply plugin: 'maven-publish'


//同时上传源码jar包
task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}
publishing {
     publications {
         mavenJava(MavenPublication) {
            from components.java//如果是war包 from components.web，这里是jar包
            //同时上传源码包
            artifact sourceJar {
                classifier "sources"
            }
        }

        //如果需要自定义重新定义三要素GAV
                 //    maven(MavenPublication) {
                 //       groupId 'org.gradle.sample'
                 //       artifactId 'project1-sample'
                 //       version '1.1'

                   //     from components.java
                  //  }

      //修改pom文件
                  //       mavenCustom(MavenPublication) {
                    //    pom.withXml {
                      //      asNode().appendNode('description',
                     //                           'A demonstration of maven POM customization')
                  //      }
                //    }

     }
     repositories {
         maven {
             url  'http://172.18.115.187:8081/repository/maven-releases/'
             credentials {
                 username = 'admin'
                 password = 'admin123'
             }
         }
     }
 }
```

### 2-2. 执行task上传

```groovy
gradle publish

gradle publishToMavenLocal//发布到本地仓库
```

## 3. 引用jar包

build.gradle文件

```groovy
repositories {
    mavenLocal()//maven本地仓库
    mavenCentral()//maven中央仓库
    maven {url 'http://172.18.115.187:8081/repository/maven-releases/'}//镜像
}
```
