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

起因

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>

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容