Я пытался гуглить тут и там, изучая, что такое groovy язык, читая учебник о gradle, просматривая видео YouTube о gradle, но все же трудно отладить, что может и не может сделать gradle. Какую переменную или метод вы можете использовать, чтобы сделать «это» и «сделать». Все, что я нашел на веб-сайте Gradle, похоже на прикрытие для базового c использования.
ЦЕЛЬ: Я хочу скомпилировать мою java банку, НО с внешней библиотекой, не извлекая ее в мою банку и поместите в папку "libs" внутри моего JAR , и без изменения структуры папки моего проекта.
Здесь структура моего проекта:
Я успешно создал файл jar, но выглядело это так:
![JAR Structure That I Got](https://i.stack.imgur.com/x7oJn.png)
Извлечение всей моей внешней библиотеки внутри моего файла jar (папка com, javafx, org, со множеством файлов дубликатов, таких как about.html
et c)
Что я действительно хочу, так это создать "толстый кувшин", например: https://dzone.com/articles/java-8-how-to-create-executable-fatjar-without-ide без извлечения библиотеки .jar file
Вот мой build.gradle:
apply plugin: 'java'
sourceCompatibility = '1.8'
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
// NetBeans will automatically add "run" and "debug" tasks relying on the
// "mainClass" property. You may however define the property prior executing
// tasks by passing a "-PmainClass=<QUALIFIED_CLASS_NAME>" argument.
//
// Note however, that you may define your own "run" and "debug" task if you
// prefer. In this case NetBeans will not add these tasks but you may rely on
// your own implementation.
if (!hasProperty('mainClass')) {
ext.mainClass = 'Main'
}
sourceSets {
main {
java {
srcDirs "src/main/java"
}
resources {
srcDirs = ["src/main/resources"]
exclude "**/*.java"
}
}
}
repositories {
mavenCentral()
// You may define additional repositories, or even remove "mavenCentral()".
// Read more about repositories here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:repositories
flatDir {
dirs 'libs'
}
}
dependencies {
// TODO: Add dependencies here ...
// You can read more about how to add dependency here:
// http://www.gradle.org/docs/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies
testCompile group: 'junit', name: 'junit', version: '4.10'
// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server
compile group: 'org.eclipse.jetty', name: 'jetty-server', version: '9.4.15.v20190215'
// https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-servlet
compile group: 'org.eclipse.jetty', name: 'jetty-servlet', version: '9.4.15.v20190215'
// https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/websocket-server
compile group: 'org.eclipse.jetty.websocket', name: 'websocket-server', version: '9.4.15.v20190215'
// https://mvnrepository.com/artifact/org.eclipse.jetty.websocket/websocket-servlet
compile group: 'org.eclipse.jetty.websocket', name: 'websocket-servlet', version: '9.4.15.v20190215'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
compile 'org.json:json:20180813'
compile name: 'dpuareu'
}
jar {
from configurations.compile.collect{ zipTree it }
manifest.attributes 'Main-class': 'Main'
}
task runJar(type: JavaExec, dependsOn:jar) {
main = "-jar";
args jar.archivePath
}
//create a single Jar with all dependencies
task fatJar(type: Jar) {
manifest.attributes 'Main-class': 'Main'
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
}
task testPrint {
doLast {
print jar.archivePath
}
}
Я действительно новичок в Gradle и хочу знать, как создавать и настраивать с учетом моих потребностей. Вот мой вопрос:
- Как заархивировать мою цель?
- Как научиться шаг за шагом учиться? Какой из них мне следует сначала изучить?
- Как отладить или узнать, что это за объект, например
configurations
. Откуда это? Что такое configurations.compile
"compile"? Где я могу найти документацию об этом? И так много ключевых слов, которые действительно полезны при создании файла сборки Gradle