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

2019-07-26  本文已影响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>

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

上一篇 下一篇

猜你喜欢

热点阅读