Skip to main content
 首页 » 编程设计

使用gradle编译打包java项目

2022年07月19日165zhenyulu

使用gradle编译打包java项目

      本文介绍使用gradle编译打包java项目,java项目仅仅为了演示,为了使用gradle脚本创建一个可执行的jar文件,即可以使用java命令直接执行,如:java –jar jarfile.jar。如果你不熟悉gradle的基本安装,请阅读“Gradle及eclipse插件安装”文章。

1.  创建java项目

gradle的项目结构和maven一致,maven和ant都使用xml写构建脚本,gradle使用自己DSL(DomainSpecific Language)基于Groovy的构建脚本,简单易用。maven构建脚本在pom.xml文件,gradle需在build.gradle文件中增加java插件代码。在Eclipse中创建gradle项目后,开始编辑脚本。

java项目自动应用java插件。java项目会增加缺省项目内容:

l  src/main/java目录,存放我们项目的源文件夹;

l  src/main/resources目录,存放资源文件,如属性文件;

l  src/test/java目录,存放测试类的文件夹;

l  src/test/resources目录,存放测试资源文件;

所有的编译输出文件存放在build目录中,并包含一些子目录,如:

l  classes目录,包含编译后的class文件;

l  libs目录,包含jar或war文件;

2.  常用的gradle脚本元素介绍

下面介绍常用build.gradle中脚本元素。

2.1.  java版本

缺省gradle脚本引用javaf1.5。使用sourceCompatibility元素,如果你安装环境是1.8,这时运行gradle会有警告,所以你需要设置gradle的1.5修改为1.8,再次运行,不再有警告,因为eclipse ide与gradle脚本中指定的java版本一致。

2.2.  项目打包

项目开发好之后,需测试/部署在不同的环境中。我们需要把项目打包成我们需要的格式,如jar、war、ear等。如何定义打包脚本,让gradlebuild命令运行后打包文件。

²  jar文件

脚本:jar{};jar元素通知gradle创建jar文件。jar是缺省值,在gradle.build文件中无需引用jar插件。

²  war文件

脚本:war{};  创建war文件的脚本为:

apply plugin: "war"

war {

}

²  ear文件

脚本:ear{};创建ear文件的脚本为:

apply plugin: "ear"

ear {

}

2.3.  jar文件和版本

默认gradle使用项目名称作为jar文件名称;版本需要使用version元素在build.gradle文件中定义。

version= ‘1.0,最终jar文件的名称为 项目名称 ‘-’版本。中间是减号连接。虽然version元素可以定义版本,还是建议在jar里面定义名称和版本,脚本如下:

jar{

      baseName = ‘myProjectName’

      version   =  ‘2.0’

}

      baseName定义jar文件名称;version定义jar版本。

如果你定义成这样:

version = '1.0'

jar {

    baseName = 'MyJavaGradleProject'

    version =  '2.0'

}

则名称为:MyJavaGradleProject-2.0.jar;因为里面的优先级高。

2.4.  定义依赖

我们需要使用“dependencies”元素定义项目依赖。当我们增加依赖,gradle从maven仓库中下载jar包至本地仓库,并加入项目构建路径。

      示例的项目定义如下:

dependencies {

compile group:'commons-collections',name:'commons-collections',version:'3.2'

testCompile group: 'junit', name: 'junit', version: '4.+'

}

      使用‘compile’定义开发依赖;使用‘testCompile’定义测试依赖。

我们可以简化上面的脚本:

dependencies {

compile("commons-collections:commons-collections:3.2")

testCompile("junit:junit:4.+")

}

还可以去掉圆括号,更简洁:

dependencies {

compile "commons-collections:commons-collections:3.2"

testCompile "junit:junit:4.+"

}

这就是说,定义每个jar依赖,无需使用group、name、版本元素,可以使用最简单的格式。但是一定要保持顺序不变,即组名,然后版本。代替(,),使用冒号分离。

2.5.  定义仓库

我们使用下面的脚本元素定义连接中央仓库,下载项目需要的项目依赖至本地仓库。这里使用maven的仓库,也可以使用默认的jCenter仓库。

      repositories{

    mavenCentral()

}

Gradle支持从maven中央仓库和JCenter上获取构件,那这两者有什么区别呢?

maven中央仓库(http://repo1.maven.org/maven2/)是由Sonatype公司提供的服务,它是Apache Maven、SBT和其他构建系统的默认仓库,并能很容易被Apache Ant/Ivy、Gradle和其他工具所使用。开源组织例如Apache软件基金会、Eclipse基金会、JBoss和很多个人开源项目都将构件发布到中央仓库。 maven中央仓库已经将内容浏览功能禁掉了,可在http://search.maven.org/查询构件。

https://jcenter.bintray.com)是由JFrog公司提供的Bintray中的Java仓库。它是当前世界上最大的Java和Android开源软件构件仓库。 所有内容都通过内容分发网络(CDN)使用加密https连接获取。JCenter是Goovy Grape内的默认仓库,Gradle内建支持(jcenter()仓库),非常易于在(可能除了Maven之外的)其他构建工具内进行配置。

JCenter相比mavenCenter构件更多,性能也更好。但还是有些构件仅存在mavenCenter中。

3.  运行gradle脚本

编写好脚本后,使用refresh gradle project 刷新gradle项目。


配置运行gradle脚本。

      编译后的文件如下图:

至此,java项目打包完成。更深入内容,后面继续。


本文参考链接:https://blog.csdn.net/neweastsun/article/details/52651673