intellij构建包含gradle依赖项的jar工件
我基本上想做一些简单的事情 - 或者至少我认为它应该非常简单。intellij构建包含gradle依赖项的jar工件
我的目标是创建一个Intellij gradle项目,使用gradle为模块添加一些依赖项并向其添加一些java源代码。
然后,我只是想有一个选项,以某种方式编译整个事情到1罐,包含所有年级的依赖,并能够使用“Java的罐子”
然而事实证明来执行,这是不是容易是我以为。
我刚刚从intellij创建了一个新的gradle项目并添加了一个Main类。
I'll给你一个概述了我的文件:
settings.gradle:
rootProject.name = 'gradleTestNewJar'
的build.gradle:
apply plugin: 'java' apply plugin: 'idea'
apply plugin: 'application'
sourceCompatibility = 1.6
version = '1.0'
repositories {
mavenCentral()
}
mainClassName = "com.randomPackage.StarterClass"
dependencies {
compile 'org.seleniumhq.selenium:selenium-java:2.46.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
主类:
package com.randomPackage; import com.gargoylesoftware.htmlunit.BrowserVersion;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;
public class StarterClass {
public static void main(String[] args){
System.out.println("test");
WebDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_38);
driver.quit();
}
}
“MyStart”的主要方法是通过调试从Intellij运行时执行。 因此,它正常工作,当所有的依赖关系得到正确加载。
注意:如果这有什么区别,我使用Intellij Community Edition。
我的尝试:
1.我想只是用 “gradlew干净构建”。
这创建了一个jar,但没有libs。 但我没有想到它会如此简单。
我试图去构建模块的神器作为这里建议:
http://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
我用提取的,而不是依赖提取尝试过。 在这两种情况下,依赖关系都被添加到jar中,但它们被添加到jar的根目录中。 当我试图运行通过“Java的罐子”的jar文件,它抱怨:
"Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver ..."
OK,所以它不能够加载的依赖关系。
注:我认为依赖关系没有添加到类路径,但我不确定这一点。但是,我期望Intellij向类路径添加依赖关系(或者在清单文件中声明)
3.我也尝试使用gradle应用程序插件。
但是,这会创建一个包含执行脚本和bin文件夹的zip/tar,这不是我的目的。
因此,我开始使用谷歌搜索几个小时,但我无法找到解决我的问题。
来吧,这不能这么难 - 它是如此基本。
我相信有些天才能帮助我,并指出我对我 - 可能是愚蠢的 - 失败。
回答:
我目前的解决方案如下:
我使用gradle这个建立一个包含所有库罐子,我做这个叫fatJar难熬自定义任务。
这里是我的build.gradle
apply plugin: 'java' jar {
manifest {
attributes("Manifest-Version": "1.0",
"Main-Class": "com.randomPackage.MainClass");
}
}
task fatJar(type: Jar) {
manifest.from jar.manifest
classifier = 'all'
from {
configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
} {
exclude "META-INF/*.SF"
exclude "META-INF/*.DSA"
exclude "META-INF/*.RSA"
}
with jar
}
一部分然后,我只是执行命令行上的“gradle这个fatJar”,并得到一个完美的罐子。
以上是 intellij构建包含gradle依赖项的jar工件 的全部内容, 来源链接: utcz.com/qa/266906.html