Gradle build.Gradle到Maven pom.xml
我有一个Gradle项目,需要将其所有依赖项转移到另一个Maven项目中使用。换句话说,如何从build.gradle生成(或生成)pom.xml?最内置的解决方案可能是使用Maven插件中的Gradle build.Gradle到Maven pom.xml,maven,gradle,pom.xml,Maven,Gradle,Pom.xml,我有一个Gradle项目,需要将其所有依赖项转移到另一个Maven项目中使用。换句话说,如何从build.gradle生成(或生成)pom.xml?最内置的解决方案可能是使用Maven插件中的archiveTask任务,该任务将在构建目录中的poms文件夹中生成pom 使用时,安装任务将自动添加到任务中,调用它将始终生成POM文件 因此,如果build.gradle文件如下所示: apply plugin: 'java' apply plugin: 'maven' group = 'my
archiveTask
任务,该任务将在构建目录中的poms
文件夹中生成pom 使用时,安装任务将自动添加到任务中,调用它将始终生成POM文件
因此,如果build.gradle文件如下所示:
apply plugin: 'java'
apply plugin: 'maven'
group = 'myGroup'
// artifactId is taken by default, from folder name
version = '0.1-SNAPSHOT'
dependencies {
compile 'commons-lang:commons-lang:2.3'
}
您可以在其文件夹中调用
gradle install
,您将在build/poms子文件夹中找到一个名为pom-default.xml的文件,该文件将包含依赖项。另外,构建的JAR和POM将在Maven本地repo中。因为我不想在本地repo中安装任何东西,所以在阅读文档之后,我做了以下操作。
添加您的build.gradle
apply plugin: 'maven'
group = 'com.company.root'
// artifactId is taken by default, from folder name
version = '0.0.1-SNAPSHOT'
task writeNewPom << {
pom {
project {
inceptionYear '2014'
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
}
}.writeTo("pom.xml")
}
没试过,胡猜 当您没有安装gradle时,“编写gradle任务来完成此任务”不是很有用。我没有使用dependecies安装这个100MB beast,而是使用过滤器将gradle依赖项转换为maven依赖项:
cat build.gradle\
| awk '{$1=$1};1'\
| grep -i "compile "\
| sed -e "s/^compile //Ig" -e "s/^testCompile //Ig"\
| sed -e "s/\/\/.*//g"\
| sed -e "s/files(.*//g"\
| grep -v ^$\
| tr -d "'"\
| sed -e "s/\([-_[:alnum:]\.]*\):\([-_[:alnum:]\.]*\):\([-+_[:alnum:]\.]*\)/<dependency>\n\t<groupId>\1<\/groupId>\n\t<artifactId>\2<\/artifactId>\n\t<version>\3<\/version>\n<\/dependency>/g"
进入
org.slf4j
slf4j api
1.7.+
回写
回归经典
1.1.+
commons cli
commons cli
1.3
pom.xml的其余部分应该手工创建。这只会将jar写入pom,但不会创建一个包含项目源的完整项目。如何让maven插件也将源代码(以及文本、资源…)目录写入POM?这应该是生成POM并在本地安装工件的“官方”方式,尤其是当您转换大量基于POM的遗留模块项目时。看起来这段代码在web上被很好地复制,我想知道谁是转换gradle2maven或maven2gradle依赖项的原始作者。您可以使用此在线服务@YoandyPérezVillazón。它仅适用于maven2gradle,反之亦然?@IlyaYevlampiev抱歉,仅适用于mvn2gradle!我引用了maven插件,但没有
archiveTask
任务。
cat build.gradle\
| awk '{$1=$1};1'\
| grep -i "compile "\
| sed -e "s/^compile //Ig" -e "s/^testCompile //Ig"\
| sed -e "s/\/\/.*//g"\
| sed -e "s/files(.*//g"\
| grep -v ^$\
| tr -d "'"\
| sed -e "s/\([-_[:alnum:]\.]*\):\([-_[:alnum:]\.]*\):\([-+_[:alnum:]\.]*\)/<dependency>\n\t<groupId>\1<\/groupId>\n\t<artifactId>\2<\/artifactId>\n\t<version>\3<\/version>\n<\/dependency>/g"
compile 'org.slf4j:slf4j-api:1.7.+'
compile 'ch.qos.logback:logback-classic:1.1.+'
compile 'commons-cli:commons-cli:1.3'
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.+</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.+</version>
</dependency>
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.3</version>
</dependency>