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

回到顶部