Я в основном хочу сделать что-то простое - или, по крайней мере, я думаю, что это должно быть довольно просто.intellij build jar artifact, содержащий зависимости градиента
Моя цель - создать проект Intellij gradle, добавить некоторые зависимости к модулю с помощью gradle и добавить к нему некоторый исходный код java.
Тогда я просто хочу, чтобы иметь возможность как-то скомпилировать все это в 1 баночке, содержащий все зависимости класса и быть в состоянии выполнить с помощью «Java -jar»
Однако оказалось, что это не так легко я думал.
Я только что создал новый проект градиента от intellij и добавил главный класс.
я дам вам обзор по моим файлам:
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 чистую сборку".
Это создало банку, но без библиотек. Но я не ожидал, что это будет так просто.
2. Я пытался построить артефакт модуля, как предложено здесь:
http://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
Я попробовал его с извлеченными и не добытых зависимостей. В обоих случаях зависимости были добавлены в банку, но они были добавлены в корень банки. Когда я попытался запустить файл банку через «Java -jar», он жаловался:
"Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
..."
ОК, так couldn't загрузки зависимостей.
ПРИМЕЧАНИЕ. Я думал, что зависимости не были добавлены в путь к классам, но я не уверен в этом. Однако я бы ожидал, что Intellij добавит зависимости к пути к классам (или объявит в файле манифеста)
3. Я также попытался использовать плагин приложения градации.
Однако это создает zip/tar, который содержит сценарий выполнения и папку bin, которая не была моей целью.
Так что я начал работать в Интернете по часам и часам, но я не могу найти решение моей проблемы.
Давай, это не может быть так сложно - это так просто.
Я уверен, что какой-то гений может помочь мне и указать на меня - возможно, глупо - неудачу.