Gradle vs Maven
在这篇文章中,我们将讨论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 Elements | Gradle 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 Command | Gradle Command |
---|---|
mvn package | gradle assemble |
mvn test | gradle test |
mvn clean | gradle clean |
mvn –help | gradle –help |
mvn install | gradle install |
mvn –version | gradle –version |
这是Maven与Gradle构建工具之间的简要比较。