首页 > 编程语言 >Gradle 教程说明 用户指南 第7章 构建Java工程----快速入门

Gradle 教程说明 用户指南 第7章 构建Java工程----快速入门

时间:2022-12-19 22:35:56浏览次数:45  
标签:project java jar gradle ---- version build Java Gradle


官网地址:http://www.gradle.org/docs/2.1/userguide/tutorial_java_projects.html


A basic Java project  一个基础的java工程


使用java插件在build.gradle:


apply plugin: 'java'




Building the project 构建工程


这里使用gradle/samples/java/quickstart  示例工程。shell进该目录。


> gradle build


命令所 运行的任务有 (你可以使用gradle taskName 来单独运行以下的一种任务):
:compileJava
:processResources
:classes
:jar
:assemble
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build


任务后提示 UP-TO-DATE 表示文件无更新,已为最新


任何执行成功后,会在当前目录下生成build目录,build目录下生成的部份目录有:


  libs/                                JAR file in the directory


  src/main/java/                 source code
  src/test/java/                   test source code
  src/main/resources/        will be include in the JAR file
  src/test/resources/          will be include in the classpath used to run the tests




其他一些 有用的任务:
clean 清除build目录
< gradle clean


Deletes the build directory, removing all built files. 
assemble 编译打jar包


< gradle assemble


:compileJava
:processResources
:classes
:jar
:assemble
会调用这五个task。编译,处理资源,生成字节码,生成jar包      


External dependencies 外部依赖


通常一个项目会引用一些外部的JAR包。那么就需要告诉Gradle在哪里可以找到它们。


在Gradle中,比如JAR文件,位于一个存储仓库(repository)。
存储仓库可以 获取依赖或发布它使之独立(比如jar包,javadoc文档)。


本例使用Maven仓库。


build.gradle:


repositories {
    mavenCentral()
}




本例需要添加一个.java源码编译时的依赖:commons-collections


和一个test源码编译时的依赖:junit


build.gradle:
dependencies {
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
    testCompile group: 'junit', name: 'junit', version: '4.+'
}




Customizing the project 定制工程


Java插件添加了许多特性到您的项目。这些属性通常有默认值。如果他们不适合,很容易改变这些值。


例子中,将为我们的Java项目指定版本号,以及我们的源代码的编译级别。


在JAR-manifest中,我们还添加了一些属性。


build.gradle:


//java compile version
sourceCompatibility = 1.5
//project version
version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version
    }
}




添加一个test 系统属性


build.gradle:
test {
    systemProperties 'property': 'value'
}




Publishing the JAR file  发布JAR包


一般打JAR包需要指定一个位置。就是要告诉Gradle这个位置。例子中打包到本地目录。也可以发布到远程位置或多个位置


build.gradle:
uploadArchives {
    repositories {
       flatDir {
           dirs 'repos'  //publish to flat dir : repos
       }
    }
}




Creating an Eclipse project 创建一个Eclipse工程


要创建Eclipse特有的描述符文件,如.project文件,你需要添加另外一个插件到您的构建文件:


build.gradle:
apply plugin: 'eclipse'
> gradle eclipse
ls -al 发现有了 .project


同理,发现gradle java 也可以执行:
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:javadoc
结果是编译并生成了javadoc文档




小结


<span style="font-size:14px;"><span style="font-size:14px;"><span style="font-family:SimSun;font-size:14px;">apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.5
version = '1.0'
jar {
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart',
'Implementation-Version': version
}
}

repositories {
mavenCentral()
}

dependencies {
compile group: 'commons-collections', name: 'commons-collections', version: '3.2'
testCompile group: 'junit', name: 'junit', version: '4.+'
}

test {
systemProperties 'property': 'value'
}

uploadArchives {
repositories {
flatDir {
dirs 'repos'
}
}
}</span></span></span>




Multi-project Java build  多Java工程构建


本节采用gradle/samples/java/multiproject 示例, shell 进该目录。


Build layout 构建布局:
multiproject/
  api/
  services/webservice/
  shared/
  services/shared/




Defining a multi-project build 定义一个多工程的构建


要定义一个多项目构建,你需要创建一个设置文件。设置文件在源代码树的根目录下。名为settings.gradle
settings.gradle:
include "shared", "api", "services:webservice", "services:shared"


说明 包含了 四个目录




Common configuration 常用配置


定义一些对于所有项目都通用的配置。采用一种叫 配置反射(configuration injection) 的技术。



build.gradle:
subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse-wtp'

    repositories {
       mavenCentral()
    }

    dependencies {
        testCompile 'junit:junit:4.11'
    }

    version = '1.0'

    jar {
        manifest.attributes provider: 'gradle'
    }
}
应用java插件到每个子项目。意味着可以在子项目中,使用上一节讲的任务和配置属性。如 gradle build。
注意所构建出的文件都在子项目中,而不是在根目录下。子项目里可以有自己的build.gradle 构建文件




Dependencies between projects 项目间的依赖关系


一个项目依赖了另一个项目的jar包。例子里,在api/build,声明了 依赖项目 shared

api/build.gradle:

dependencies {

    compile project(':shared’)

}





Creating a distribution 创建发布任务


api/build.gradle:

task dist(type: Zip) {

    dependsOn spiJar

    from 'src/dist'

    into('libs') {

        from spiJar.archivePath

        from configurations.runtime

    }

}

artifacts {

   archives dist

}

> gradle dist
以zip类型发布api工程的Jar包,依赖了任务spiJar,从目录src/dist 添加到(打包进)build/libs/


该命令还会生成一个发布目录:build/distributions

标签:project,java,jar,gradle,----,version,build,Java,Gradle
From: https://blog.51cto.com/u_11407799/5953917

相关文章

  • Android(Lollipop/5.0) Material Design(五) 使用图片
    官网地址:https://developer.android.com/intl/zh-tw/training/material/drawables.html#DrawableTint以下图片的功能能帮助你在app中实现Material设计:·图片着色·颜色提......
  • Ubuntu下搭建WordPress环境
    WordPress是一种使用​​PHP语言​​​开发的​​博客​​​平台,用户可以在支持PHP和​​MySQL​​​数据库的​​服务器​​​上架设属于自己的网站。也可以把WordPress当......
  • Django之Ajax
    什么是Ajax?ajax全名:asyncjavascriptandXML(异步JavaScript和XML)是前后台交互的能⼒,也就是我们客户端给服务端发送消息的⼯具,以及接受响应的⼯具AJAX不是新......
  • TCP/IP 协议(10):TCP 协议一百问
    TCP/IP协议(10):TCP协议一百问​​杨领well的TCP/IP协议专栏​​TCP协议部分一直没有更新,是因为我不确定到底应该怎么来介绍TCP协议才能干货满满。最后我决定以Q&A......
  • .NET Redis客户端SimpleRedis的使用
    一、项目说明SimpleRedis基于新生命团队NewLife.Redis的封装,支持.NETCore3/.NET6/7。NewLife.Redis是一个Redis客户端组件,以高性能处理大数据实时计算为目标。源码: h......
  • java表单工具都有哪些特点?
    随着数字化进程步伐的加快,java表单工具也逐渐在传统的表单制作工具中脱颖而出,成为提质增效的有利工具。那么,java表单工具都有哪些特点?为了帮助大家解答疑惑,小编特意整理出......
  • 详解逻辑回归与评分卡-用逻辑回归制作评分卡-分箱【菜菜的sklearn课堂笔记】
    视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili分训练集和测试集fromsklearn.model_selectionimporttrain_te......
  • 酷我音乐免费下载
    酷我音乐  本文实现了酷我音乐的付费/免费音乐的下载功能,根据提示输入关键词即可下载。#-*-coding:utf-8-*-"""===========================================......
  • 【iOS-Cocos2d游戏开发之十八】解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动
       本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题; 1.解决滚屏背景或拼接地图有黑边!   对于游戏开发中,背景(游戏地图)是必要的元素之一,那......
  • 小洋人一周体验卡
    又是一周没有更新博客的日子,在这几天里面,我经历了一次小洋人的一周体验卡。阳的第一天,我的身体没有什么特殊症状,只是感觉到头有一点疼,有点晕晕乎乎的感觉,我当时没有想到自......