相关疑难解决方法(0)

使用Gradle创建可运行的JAR

到目前为止,我通过Eclipse"Export ..."功能创建了可运行的JAR文件,但现在我切换到IntelliJ IDEA和Gradle进行构建自动化.

这里的一些文章提出了"应用程序"插件,但这并不完全导致我期望的结果(只是一个JAR,没有启动脚本或类似的东西).

如何通过Eclipse"Export ..."对话框实现相同的结果?

java jar gradle

128
推荐指数
8
解决办法
15万
查看次数

使用gradle将资源,配置文件添加到jar中

如何使用gradle将配置文件或任何其他资源添加到我的jar中?

我的项目结构:

src/main/java/com/perseus/.. --- Java包(源文件)

src/main/java/config/*.xml --- Spring配置文件

预期的罐子结构:

com/perseus/.. --- Java包(类文件)

config/*.xml --- Spring配置文件

gradle build.gradle

71
推荐指数
5
解决办法
12万
查看次数

用Gradle建立一个uberjar

我是Gradle新手.我想构建一个uberjar(AKA fatjar),它包含项目的所有传递依赖项.我需要在"build.gradle"中添加哪些行?

这就是我现在所拥有的:(我几天前从某处复制过,但不记得从哪里开始.)

task uberjar(type: Jar) {
    from files(sourceSets.main.output.classesDir)

    manifest {
        attributes 'Implementation-Title': 'Foobar',
                'Implementation-Version': version,
                'Built-By': System.getProperty('user.name'),
                'Built-Date': new Date(),
                'Built-JDK': System.getProperty('java.version'),
                'Main-Class': mainClassName
    }
}
Run Code Online (Sandbox Code Playgroud)

java groovy uberjar gradle

36
推荐指数
4
解决办法
4万
查看次数

如何使用gradle kotlin脚本创建胖罐

正如标题所述,我想知道如何修改它gradle.build.kts以便创建一个独特jar的所有依赖项(包括kotlin lib)的任务.

我在Groovy中找到了这个示例:

//create a single Jar with all dependencies
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': version,
            'Main-Class': 'com.mkyong.DateUtils'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在kotlin中写出来,除了:

task("fatJar") {

}
Run Code Online (Sandbox Code Playgroud)

kotlin build.gradle build.gradle.kts gradle-kotlin-dsl

29
推荐指数
4
解决办法
1万
查看次数

Gradle“条目.classpath是重复的,但没有设置重复的处理策略”

我正在尝试构建一个 gradle 项目,但是当我尝试时,$ gradle build我得到以下输出:

Starting a Gradle Daemon (subsequent builds will be faster)
> Task :jar FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':jar'.
> Entry .classpath is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.0/dsl/org.gradle.api.file.CopySpec.html#org.gradle.api.file.CopySpec:duplicatesStrategy for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan …
Run Code Online (Sandbox Code Playgroud)

java compilation build gradle

10
推荐指数
6
解决办法
5298
查看次数

在Gradle Kotlin DSL中注册和创建之间有什么区别

在Gradle(5.0+)中有两种创建方法,即任务:

tasks {
    val javadocJar by creating(Jar::class) {
        val javadoc by tasks

        from(javadoc)
        classifier = "javadoc"
    }
}
Run Code Online (Sandbox Code Playgroud)

tasks {
    val javadocJar by registering(Jar::class) {
        val javadoc by tasks

        from(javadoc)
        classifier = "javadoc"
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上是相同的API,有什么区别?

gradle kotlin gradle-kotlin-dsl

6
推荐指数
2
解决办法
868
查看次数

Gradle fat jar 不包含库

我创建了一个简单的 Gradle Java 项目。该build.gradle文件如下所示:

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.10'
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.0'
}

test {
    useJUnitPlatform()
}

task customFatJar(type: Jar) {
    archiveBaseName = 'fat-jar'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
Run Code Online (Sandbox Code Playgroud)

我正在jar根据https://www.baeldung.com/gradle-fat-jar创建脂肪。

但是,生成的 jar 不包含commons-lang3库。它只包含项目的类文件。

为什么我的库没有包含在 fat 中jar

java jar gradle gradle-task fatjar

5
推荐指数
1
解决办法
1110
查看次数

Java Gradle Build:NoClassDefFoundError

我的build.gradle文件如下

apply plugin: 'java' sourceCompatibility = 1.8

repositories {
    mavenCentral() }


dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile 'io.javalin:javalin:1.3.0'
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.4'
    compile 'org.slf4j:slf4j-simple:1.7.25' }

jar {
    manifest {
        attributes(
                'Class-Path': configurations.runtime.files.collect {"$it.name"}.join(' '),
                'Main-Class': 'products.ProductAPI'
        )
    } }

task stage {
    dependsOn 'build'
    dependsOn 'clean'
    build.mustRunAfter clean }
Run Code Online (Sandbox Code Playgroud)

尝试使用gradle构建Java应用程序并将其部署到heroku服务器.我有一些问题,java -jar build/libs/MyApp-0.0.1.jar因为它返回以下内容:

线程"main"中的异常java.lang.NoClassDefFoundError:io/javalin/Javalin at products.ProductAPI.main(ProductAPI.java:7)引起:java.lang.ClassNotFoundException:io.javalin.Javalin 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)

java dependencies build heroku gradle

2
推荐指数
1
解决办法
2060
查看次数