Gradle是一个很好用的编译工具。稍微有点不太方便的地方在于,有的开发环境只提供的Maven。所以有时候,我们需要利用 Gradle 生成 Maven 需要 POM.xml 文件。下面的方法可以把gradle转成maven项目,前提gradle项目目录结构保持跟maven一样的约定,即/src/main/java这一套。
生成 pom.xml
1、打开 build.gradle 文件,在build.gradle中增加以下内容(group,version可自行修改,artifactId默认为目录名称)
apply plugin: 'java'
apply plugin: 'maven'
group = 'com.angei'
version = '1.0.0'
sourceCompatibility = 1.8
plugins的格式可以如下:
plugins {
id 'java'
id 'maven'
group = 'com.angei'
version = '1.0.0'
sourceCompatibility = 1.8
2、在终端下执行
gradle install
成功后,会在 build目录下的 poms 文件夹下生成 pom-default.xml,将其改名为 pom.xml 拷贝到项目的根目录下即可。
生成的pom-default.xml如下:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>com.angei</groupId>
6 <artifactId>gradle-first</artifactId>
7 <version>1.0.0</version>
8 <dependencies>
9 <dependency>
10 <groupId>junit</groupId>
11 <artifactId>junit</artifactId>
12 <version>4.12</version>
13 <scope>test</scope>
14 </dependency>
15 </dependencies>
16 </project>
1、在build.gradle的文件中添加着色部分的内容:
1 buildscript {
2 repositories {
3 mavenCentral()
5 dependencies {
6 classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")
10 apply plugin: 'java'
11 apply plugin: 'jacoco'
12 apply plugin: 'spring-boot'
13 apply plugin: 'maven'
15 sourceCompatibility = 1.8
16 compileJava.options.encoding = 'UTF-8'
19 group = 'com.101tec'
20 // Options for naming the JAR file
21 archivesBaseName = 'trackr-backend'
22 version = '1.0'
23 if(project.hasProperty('teamcity')) {
24 version += '-build-' + project.teamcity['build.number']
25 } else {
26 version += '-localbuild'
27 }
30 sourceCompatibility = 1.8
32 repositories {
33 mavenCentral()
34 }
36 springBoot {
37 executable = true
38 }
40 dependencies {
41 compile "org.springframework.boot:spring-boot-starter-data-rest"
42 compile "org.springframework.boot:spring-boot-starter-data-jpa"
43 compile "org.springframework.boot:spring-boot-starter-mail"
44 compile "org.springframework.boot:spring-boot-starter-integration"
45 compile "org.springframework.boot:spring-boot-starter-security"
47 // not included in boot
48 compile "org.springframework.integration:spring-integration-mail:4.2.5.RELEASE"
49 compile "org.springframework.security.oauth:spring-security-oauth2:2.0.11.RELEASE"
51 compile "com.h2database:h2"
52 compile "postgresql:postgresql:9.1-901.jdbc4"
53 compile "org.flywaydb:flyway-core"
55 compile("org.xhtmlrenderer:flying-saucer-pdf-itext5:9.0.6")
56 compile("org.thymeleaf:thymeleaf:2.1.3.RELEASE")
58 compile "org.projectlombok:lombok:1.12.4"
60 compile "org.glassfish:javax.json:1.0"
63 testCompile "org.springframework.boot:spring-boot-starter-test"
64 testCompile("org.echocat.jomon:testing:1.4.3") {
65 exclude group: "org.mockito"
66 }
67 testCompile "org.mockito:mockito-core:1.9.5"
68 testCompile "com.jayway.jsonpath:json-path"
69 testCompile "org.apache.httpcomponents:httpclient"
70 }
73 task wrapper(type: Wrapper) {
74 gradleVersion = '2.2'
75 }
77 task createPom << {
78 pom {
79 project {
80 groupId 'com.angei'
81 artifactId 'gradle-first'
82 version '1.0.0'
83 }
84 }.writeTo("$buildDir/pom.xml")
85 }
其中这个
createPom
的task改成任何你自己喜欢的名字,如createPom、mavenPom、testPom等,然后只需要执行。
2、在终端执行:
gradle createPom
执行成功如图
生成的Pom.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.angei</groupId>
<artifactId>gradle-first</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.feidee.laoyeye</groupId>
<artifactId>feidee-laoyeye-service-dto</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.feidee.finance</groupId>
<artifactId>finance-lib-javaweb</artifactId>
<version>1.0.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>1.3.7.RELEASE</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>kafka-clients</artifactId>
<groupId>org.apache.kafka</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.13.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>