我基本上想做一些簡單的事情 - 或者至少我認爲它應該非常簡單。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,這不是我的目的。
因此,我開始使用谷歌搜索幾個小時,但我無法找到解決我的問題。
來吧,這不能這麼難 - 它是如此基本。
我相信有些天才能幫助我,並指出我對我 - 可能是愚蠢的 - 失敗。