Utwórz plik wykonywalny Groovy za pomocą Gradle
To mój skrypt gradle build.
apply plugin: 'groovy'
project.group = "test.tree"
archivesBaseName = "tree"
project.version = "1.0"
manifest.mainAttributes("Main-Class" : "test.tree.App")
sourceCompatibility=1.6
targetCompatibility=1.6
repositories {
mavenCentral()
}
dependencies {
groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.6'
testCompile group: 'junit', name: 'junit', version: '4.8.2'
}
And this compiles just fine
Problem polega na tym, że nie mogę uruchomić utworzonego Jara, dostaję wyjątek
java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
Więc domyślam się, że wtyczka groovy nie zawiera wszystkich niezbędnych klas wewnątrz słoika.
Jak stworzyć samodzielny słoik, który mogę po prostu .. run; -)
3 answers
To, czego szukasz, to wtyczka application , która pozwala zbudować samodzielną aplikację JVM zawierającą wszystkie zależności i uruchamiane Skrypty.
apply plugin:'application'
mainClassName = 'test.tree.App'
EDIT:
To powinno utworzyć uberjar, który chcesz:
task uberjar(type: Jar) {
from files(sourceSets.main.output.classesDir)
from configurations.runtime.asFileTree.files.collect { zipTree(it) }
manifest {
attributes 'Main-Class': 'test.tree.App'
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-18 15:42:45
Poniższy kod jest również ok, Użyj wtyczki Spring boot
buildscript {
ext {
springBootVersion = '1.2.6.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'groovy'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories {
mavenCentral()
}
sourceSets {
main {
groovy {
srcDirs = ['src']
}
}
/*test {
groovy {
srcDirs = ['test/groovy']
}
}*/
}
dependencies {
compile "com.alibaba:fastjson:1.1.34"
compile 'org.codehaus.groovy:groovy-all:2.4.5'
//testCompile group: 'junit', name: 'junit', version: '4.8.2'
}
springBoot {
backupSource = false
mainClass = "com.zhb.hello.Hello"
}
jar{
baseName = 'hellogroovy'
version = '1.1.0'
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-04 01:52:38
Dorzuciłbym głos na wtyczkę shadow gradle . Jest w stanie budować słoiki Ubera i jest dość wszechstronny i zdolny do rzeczy takich jak przenoszenie klas, aby zapobiec piekłu zależności {4]}.
Nie będę się wdawać w porównywanie dwóch wtyczek, ale posunę się tak daleko, że powiem, że mam grawitacji w kierunku korzystania z shadow od korzystania z aplikacji w przeszłości ze względu na dodane funkcje.
Kiedy zmęczy mnie czas uruchamiania skryptów groovy opartych na @ Grab, Mam tendencję do pisania pliku Gradle budować za pomocą wtyczki shadow nawet dla pojedynczych plików GROOVY skryptów. Przykładowy plik gradle build umożliwiający zbudowanie uber jar pliku skryptu groovy w bieżącym katalogu. Główna nazwa klasy musi odpowiadać nazwie pliku skryptu:
repositories {
jcenter()
mavenCentral()
}
defaultTasks = ['shadowJar']
version = "1.0"
dependencies {
compile "org.codehaus.groovy:groovy:2.4.7",
"commons-cli:commons-cli:1.2"
}
sourceSets {
main {
groovy {
srcDirs = [rootDir]
}
}
}
project.tasks.remove jar
shadowJar {
manifest {
attributes 'Main-Class': 'MyGroovyScriptName'
}
classifier = ""
}
Uber jar zostanie wygenerowany w katalogu build/libs
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-03 19:42:42