我基本上想做一些简单的事情 - 或者至少我认为它应该非常简单。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,这不是我的目的。
因此,我开始使用谷歌搜索几个小时,但我无法找到解决我的问题。
来吧,这不能这么难 - 它是如此基本。
我相信有些天才能帮助我,并指出我对我 - 可能是愚蠢的 - 失败。