美文网首页
将 Gradle 项目转换成 Maven 需要的POM

将 Gradle 项目转换成 Maven 需要的POM

作者: 每天多一点 | 来源:发表于2019-07-26 10:27 被阅读0次

    起因

    Gradle是一个很好用的编译工具。稍微有点不太方便的地方在于,有的开发环境只提供的Maven。所以有时候,我们需要利用 Gradle 生成 Maven 需要 POM.xml 文件

    生成 pom.xml

    打开 build.gradle 文件,增加 id 'maven' 这一行

    plugins {
        // Apply the java plugin to add support for Java
        id 'java'
    
        // Apply the application plugin to add support for building an application
        id 'application'
        // 增加下面这一行
        id 'maven'
    }
    ...
    

    然后在终端下执行

    $ gradle install
    

    成功后,会在 build目录下的 poms 文件夹下生成 pom-default.xml,将其改名为 pom.xml 拷贝到项目的根目录下即可。

    调整 pom.xml 的内容

    打开上面生成的 pom.xml 可以发现 groupId 是空的,原因是我们 build.gradle 文件中其实没有这个内容。

    <?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></groupId>
      ...
    

    按照自己的需要填写上需要的 group id
    生成jar包执行后,会发现系统提示没有主清单属性。这需要在 pom.xml 中添加 build 步骤用 maven plugin 来指定主class。下面的例子里,我们的主class是 "my.main.Appclass" 。

    </project>
    ...
      <build>
        <plugins>
          <plugin>
            <!-- Build an executable JAR -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <classpathPrefix>lib/</classpathPrefix>
                  <mainClass>my.main.Appclass</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    

    修改后,重新编译,执行就可以看到正确的结果了。

    相关文章

      网友评论

          本文标题:将 Gradle 项目转换成 Maven 需要的POM

          本文链接:https://www.haomeiwen.com/subject/kvtrrctx.html