Gradle vs Maven

时间:2020-02-23 14:41:23  来源:igfitidea点击:

在这篇文章中,我们将讨论gradle vs maven。
我们还将看到如何从"命令提示符"中运行gradle命令。

我们已经在"什么是Gradle和Gradle教程"帖子中比较了maven vs gradle。
其中我们将深入研究gradle命令和相应的maven命令。

我们将使用Gradle Spring MVC示例程序来演示本文中的大多数gradle命令。

Gradle vs Maven

gradle和maven都是构建和依赖项管理工具。
在比较gradle与maven时,我们将研究以下几点。

  • Gradle vs Maven命令
  • 将Gradle项目安装到MavenRepo
  • Maven vs Gradle构建脚本主要元素
  • Maven vs Gradle命令简介

Gradle vs Maven命令

由于我们都已经非常熟悉Maven构建工具,因此最好将Maven命令与gradle命令进行比较,以轻松学习gradle。

在本节中,我们将尝试采用每个maven命令,并在gradle中找出对应的命令。

像Maven一样,我们可以通过使用某些IDE(例如Eclipse IDE,Spring STS IDE,IntelliJ IDEA等)以及从命令提示符下运行gradle命令。

要知道版本:首先,我们应该知道的是我们的软件版本,以便我们了解可以在应用程序开发中使用的功能。

要了解Maven的版本,我们需要使用以下maven命令:

mvn --version

要了解gradle的版本,我们需要使用以下gradle命令:

gradle --version

创建JAR/WAR/EAR要将我们的应用程序部署到任何Web或者Application服务器中,我们需要创建我们的应用程序JAR/WAR/EAR文件。

要创建JAR/WAR/EAR,我们需要使用以下maven命令:

mvn package

要在gradle中创建JAR/WAR/EAR,我们需要使用以下gradle命令:

gradle assemble

在执行此命令之前,请在项目根目录中打开命令提示符,然后执行" dir"命令以查看当前工作目录的内容。

其中我们可以看到除" src"文件夹外,我们什么都没有。
现在执行" gradle assemble"命令。

在这里我们可以看到" BUILD SUCCESSFUL"。
此命令首先编译所有源文件,然后创建war文件。
现在再次执行" dir"命令以查看当前工作目录的内容。

我们可以在${PROJECT_ROOT_DIR}/build/libs /中观察到新生成的war文件,如下所示。

我们可以在$${PROJECT_ROOT_DIR}/build/classes/main/[我们的包装结构]/
class中观察已编译的
.class文件。

运行单元测试要仅运行JUnit测试而不创建我们的应用程序JAR/WAR/EAR文件,我们需要使用以下命令:

要编译和运行单元测试:

mvn test
gradle test

跳过单元测试要跳过JUnit测试并执行所需的其他任务,我们需要使用以下命令:

mvn install -DskipTests
#OR
mvn install -Dmaven.test.skip=true
gradle -x test install

要运行JUnit并创建JAR/WAR/EAR,首先要运行JUnit测试,然后创建我们的应用程序JAR/WAR/EAR文件,我们需要使用以下命令:

编译,测试和组装:

mvn test package
gradle build

注意:在maven和gradle中,我们都可以通过管道传递两个或者多个命令,并立即执行它们,如上所示。

清理始终建议在编译和构建应用程序代码之前清理所有内容。

要删除构建目录:

mvn clean
gradle clean

安装要编译,构建并安装到本地Maven存储库,我们需要使用以下命令。

mvn install
gradle install

部署Web应用程序要将应用程序WAR/EAR文件部署到服务器中,我们需要使用以下命令。

mvn deploy

要在Jetty嵌入式服务器上运行:

mvn jetty:run

Gradle对于每个服务器都有单独的命令来运行创建的WAR/WAR文件。

要在嵌入式Jetty服务器中使用已创建的WAR文件运行我们的Web应用程序,请执行以下操作:

gradle jettyRun

要构建WAR文件,请在嵌入式Docker服务器中部署并运行它:

mvn jetty:run-war
gradle jettyRunWar

创建JAR文件要从编译的类文件创建JAR文件,我们需要使用以下命令。

mvn jar
gradle jar
#or 
gradle libs

用于生成项目和所有Eclipse必需文件的Eclipse IDE命令。

mvn eclipse:eclipse
gradle eclipse

要清除所有Eclipse必需的文件:

mvn eclipse:clean
gradle cleanEclipse

将Gradle项目安装到Maven Repo

我们可以使用gradle install命令来构建应用程序JAR/WAR文件并将其安装到我们的本地Maven存储库中。

我们无法在Gradle Spring MVC的上一个gradle项目示例中执行" gradle install"命令,因为我们没有在build.gradle文件中指定任何maven插件。

现在,我们将更改build.gradle文件以包含此功能。
请按照以下简单步骤操作。

  • 将Maven插件添加到build.gradle文件
apply plugin: 'maven'
  • 添加GroupId和我们的JAR/WAR文件版本

如下所示添加build.gradle文件根元素。

group = "com.theitroad"
version = "1.0"

如果我们在此处未指定版本元素,则它将使用war文件的版本声明,如下所示。

war {
  baseName = 'SpringMVCExample'
  version = '1.0.0-BUILD-SNAPSHOT'
}

现在,我们的gradle安装也将应用程序jar/war文件也复制到Maven存储库。

  • 我们完整的新build.gradle文件
apply plugin: "java"
apply plugin: "eclipse"
apply plugin: "war"
apply plugin: 'maven'
 
sourceCompatibility = 1.7

group = "com.theitroad"
version = "1.0"

war {
  baseName = 'SpringMVCExample'
  version = '1.0.0-BUILD-SNAPSHOT'
}
 
repositories {
  mavenCentral()
}

dependencies {
  compile("org.springframework:spring-context:4.0.0.RELEASE")
  compile("org.springframework:spring-webmvc:4.0.0.RELEASE")
  compile("org.aspectj:aspectjrt:1.7.4")
	compile("javax.inject:javax.inject:1")
  compile("javax.servlet:servlet-api:2.5")
  compile("javax.servlet:jstl:1.2")
  compile("javax.servlet.jsp:jsp-api:2.1")	
  compile("org.slf4j:slf4j-api:1.7.5")
  compile("org.slf4j:jcl-over-slf4j:1.7.5")
  compile("org.slf4j:slf4j-log4j12:1.7.5")
  compile("log4j:log4j:1.2.15")

  testCompile("junit:junit:4.7") 
}
  • 执行" gradle install"命令
  • 观察我们的本地Maven存储库

Maven vs Gradle构建脚本主要元素

如果同时观察maven的pom.xml和gradle的build.gradle文件,我们会发现以下内容。

Maven ElementsGradle Elements
<groupId>Gradle's "group"; Element
<artifactId>Gradle's "baseName"; Element
<version>Gradle's "version"; Element
  • 像Maven一样,我们可以将现有的ANT任务集成到Gradle中,并在我们的项目中使用它们。

  • 像Maven一样,我们可以创建自己的项目特定的Gradle任务,并在我们的项目中使用它们。

  • 我们甚至可以将Maven任务与Gradle构建工具集成在一起。

Maven vs Gradle命令

下表列出了所有重要的maven和gradle命令。

Maven CommandGradle Command
mvn packagegradle assemble
mvn testgradle test
mvn cleangradle clean
mvn –helpgradle –help
mvn installgradle install
mvn –versiongradle –version

这是Maven与Gradle构建工具之间的简要比较。