gradle使用学习(一)————环境与配置



整理一些学习成果备忘。



首次使用gradle时,如果不配置环境变量,则gradle会在用户目录下(在Windows下是C盘的目录)创建.gradle目录,并将下载的依赖文件保存在这个目录里。


如果不想使用缺省目录,则可以设置环境变量GRADLE_USER_HOME的路径,可改变gradle的缓存目录。




1.使用


执行
gradle tasks看可以使用的tasks



<span style="color:#3366ff;">gradle init</span>可以初始化一个build.gradle文件。




2.建立一个build.gradle文件,增加一行


<span style="color:#3366ff;">apply plugin: 'java'</span>后执行
<span style="color:#3366ff;">gradle tasks</span>可以看到新增加的Task列表。




3.此时执行


<span style="color:#3366ff;">gradle build</span>也可以Build出一个Jar文件




4.使用


<span style="color:#3366ff;">gradle init --type java-library</span>可以创建一个Java工程的目录结构和build.gradle文件。将文件里使用的仓库改使用为Maven的仓库: 
 
<span style="color:#3366ff;">mavenLocal()
mavenCentral()</span>这里的mavenCentral是指外网的Maven服务器,不是私服。如果要使用私服,需要加 
 
<span style="color:#3366ff;">repositories {
    maven {
        url "http://<自己的IP>/nexus/content/groups/kypublic/"
    }
}</span>对于一个软件公司,通常有自己的Maven服务器,

所以不需要加mavenCentral。
虽然使用Maven本地仓库,但gradle执行时还是要读到gradle自己的缓存目录中。




5.下载的gradle工程里面依赖的仓库地址的修改


一般来说可以按上面的方式修改配置文件,如果不想修改开源产品的配置文件,则通过动态修改对Maven服务器请求的地址,也可以转到自己的Maven服务器。
在上面说的gradle的缓存目录下,建一个文件:init.gradle。文件内容如下:

<span style="color:#3366ff;">allprojects{
    repositories {
        def REPOSITORY_URL = 'http://<自己的IP>/nexus/content/groups/kypublic/'
        all { ArtifactRepository repo ->
            if(repo instanceof MavenArtifactRepository){
                def url = repo.url.toString()
                if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')) {
                    project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
                    remove repo
                }
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}</span>这样可以将对外网Maven服务器

的请求,转到使用自已的Maven服务器。




7.将Maven项目转为gradle项目


<span style="color:#3366ff;">gradle init --type pom</span>


8.命名生成的JAR文件


<span style="color:#3366ff;">jar { baseName = 'gs-gradle' version = '0.1.0' }</span>


9.发布到Maven本地


<span style="color:#3366ff;">task sourceJar(type: Jar) {
  classifier "sources"
}

publishing {
    publications {
        mavenJava(MavenPublication) {
		    groupId 'org.gradle.sample.impl'
            artifactId 'project2-impl'
            version '2.3'
			
            from components.java
			artifact sourceJar
        }
    }
}</span>



10.发布到Maven仓库


对于发布到snapshots,版本号必需为snapshots的格式,否则发布不成功

<span style="color:#3366ff;">task sourceJar(type: Jar) {
  classifier "sources"
}

publishing {
    publications {
        mavenJava(MavenPublication) {
		    groupId 'org.gradle.sample.impl'
            artifactId 'project2-impl'
            version '3.6.0-SNAPSHOT'
			
            from components.java
			artifact sourceJar
        }
    }
}
publishing {
    repositories {
        maven {
            // change to point to your repo, e.g. http://my.org/repo
            url "http://<自己的IP>/nexus/content/repositories/snapshots/"
			credentials { 
              username  'user1' 
              password  'pw1' 
            }
        }
    }
}</span>


当然Maven服务器的用户名和密码不应该直接写在工程的配置文件中,可以在gradle的GRADLE_USER_HOME目录下加个gradle.properties文件,内容如下:

<span style="color:#3366ff;">MAVEN_USER=admin
MAVEN_PASSWORD=admin</span>然后将上面的内容改为为 
 
<span style="color:#3366ff;">publishing {
    repositories {
        maven {
            // change to point to your repo, e.g. http://my.org/repo
            url "http://<自己的IP>/nexus/content/repositories/snapshots/"
			credentials { 
              username  MAVEN_USER 
              password  MAVEN_PASSWORD 
            }
        }
    }
}</span>


然后执行命令

<span style="color:#3366ff;">gradle publish</span>

参考:


https://docs.gradle.org/current/release-notes http://www.iteye.com/topic/1134762