我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar.我试过shadow,gradle-fatjar-plugin,gradle-one-jar,spring-boot-gradle-plugin插件,但他们都没有增加我的依赖性声明implementation(我没有任何compile的).它适用compile于gradle-one-jar插件,但我想有implementation依赖.
非常感谢你!
我有兴趣在一个可执行的jar文件中构建一个包含所有模块依赖项和外部jar的jar,我将能够运行它java -jar myApp.jar.
我有模块A依赖于模块B.目前我正在使用gradle,我的build.gradle脚本如下所示:
apply plugin: 'fatjar'
description = "A_Project"
dependencies {
compile project(':B_Project')
compile "com.someExternalDependency::3.0"
}
Run Code Online (Sandbox Code Playgroud)
当我通过gradle命令构建它时:clean build fatjar按预期创建一个胖罐"A.jar".但是,如上所述,运行它会导致:
no main manifest attribute, in A.jar
如何修改我的build.gradle文件并指定主类或清单?
我有一个配置了Gradle和Kotlin的项目。这是一个命令行实用程序,我希望能够从终端运行生成的jar。但是我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at com.autentia.impt.MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我的gradle配置如下:
buildscript {
ext.kotlin_version = '1.2.20'
ext.junit_platform_version = '1.0.1'
ext.junit_version = '5.0.0'
ext.moshi_version = '1.5.0'
ext.jna_version = '4.5.0'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.junit.platform:junit-platform-gradle-plugin:$junit_platform_version"
}
}
version '1.0-SNAPSHOT'
apply plugin: 'kotlin'
apply plugin: 'application'
apply plugin: 'org.junit.platform.gradle.plugin'
mainClassName = 'com.autentia.impt.MainKt'
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib"
implementation "org.jetbrains.kotlin:kotlin-reflect"
implementation "com.squareup.moshi:moshi:$moshi_version" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gradle/Clojuresque来构建clojure代码,运行它,并获得uberjar.我使用提示从http://dev.clojure.org/display/doc/Getting+Started+with+Gradle,https://bitbucket.org/kotarak/clojuresque/wiki/Getting%20Started和"无法找到我们Grab for Clojure(Clojuresque)的.bpsm:edn-java:0.4.3'错误.
这是成绩脚本.
buildscript {
repositories {
maven { url "http://clojars.org/repo" }
mavenCentral()
}
dependencies {
classpath "clojuresque:clojuresque:1.7.0"
}
}
apply plugin: 'clojure'
clojure.aotCompile = true
repositories {
flatDir dirs: project.file("lib/runtime")
maven { url "http://clojars.org/repo" }
}
Run Code Online (Sandbox Code Playgroud)
有了gradle buildtask,没有错误,我有一个jar文件,但是我没有看到生成的任何类文件; 我不认为生成的jar什么都不包含,特别是当我比较手动构建的结果时(从命令行编译clojure源到类(AOT)(不使用lein)).
.
??? build
? ??? libs
? ? ??? clojure.jar
? ??? tmp
? ??? jar
? ??? MANIFEST.MF
??? build.gradle
??? src
??? hello
??? core.clj
Run Code Online (Sandbox Code Playgroud)
这是core.clj
(ns …Run Code Online (Sandbox Code Playgroud) gradle ×4
jar ×3
java ×2
build ×1
clojure ×1
clojuresque ×1
fatjar ×1
intellij-13 ×1
kotlin ×1
uberjar ×1