Gradle

使用初始化配置

(1)场景

当需要所有的 gradle 项目都进行同样的配置时。

(2)过程

  1. USER_HOME/.gradle 目录创建名为 init.gradle的文本文件;
  2. init.gradle 编写初始化脚本。

(3)案例:配置自建的 Maven 私有服务器

// init.gradle
allprojects {
 
  ext.RepoConfigurator = {
    maven {
      url 'http://maven-xx-inc.com/repository/maven-public/'
    }
    maven {
      url 'http://nexus.mobisummer-inc.com/nexus/content/groups/public'
    }
  }
 
  buildscript.repositories RepoConfigurator
  repositories RepoConfigurator
}

排错

Can't execute jar- file: “no main manifest attribute”

在 Linux 上运行 jar 包时出现无法执行的错误,原来是没有配置主类,解决方案如下:

apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'com.package.app.Class'
    }
}

打出的包不包含任何第三方依赖

解压打出来的 jar 包发现里面没有第三方依赖无法运行,这时候有两种解决方案:

(1)把第三方的 jar 包收集放到一个 class path 目录,然后就可以正常启动了。不过这种方法很笨,因为现在的依赖都是通过 gradle 或者 maven 引入,手动去找这些 jar 包并放到服务器上的 class path 目录,这很费劲,不过好处是打出的包很小,上传很快。

(2)使用 shadow 将所有依赖合并成一个 jar 包,这很神奇。

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "com.github.jengelman.gradle.plugins:shadow:4.0.3"
  }
}

apply plugin: 'java'
apply plugin: "com.github.johnrengelman.shadow"

shadowJar {
  manifest {
    attributes 'Main-Class': 'com.example.Main'
  }
}

改完 gradle 脚本之后打包命令不再是 ./gradlew assemble 而是用 ./gradlew shadowJar

写在后面:

1. 子曰:「学而不思则罔,思而不学则殆」。
2. 站点地图
2. 本作品作者为 Lshare,采用知识共享署名 4.0 国际许可协议进行许可。
原文地址:https://www.cnblogs.com/lshare/p/11334320.html