Я строю проект на основе java 12, используя Gradle в качестве инструмента для сборки, и все идет хорошо, пока я не поделился кодом в репозитории, чтобы другой разработчик мог его посмотреть. Случайно кажется, что я поместил много jar-файлов в classpath как зависимости в проекте
![enter image description here](https://i.stack.imgur.com/nAoIE.png)
по общему признанию, это будет выглядеть ужасно, я уверен, что некоторые более компетентные разработчики там, но я не делал этого раньше, поэтому моя вероятная ошибка ладьи ie здесь. Больше всего я понимаю, что как это произошло, то есть я не помню, чтобы сам добавлял эти зависимости в путь к классам, поэтому я предполагаю, что gradle сделал это для меня.
Поэтому у меня есть несколько вопросов:
- Правильно ли я поступил? Должен ли я позволить позволить gradle обрабатывать мои обновления пути к классам, как это? (Я предполагаю, что это было gradle, потому что пути к папкам в основном основаны на gradle)
- Подтвердите, что на самом деле это не было затмением, и я ввожу себя в заблуждение, полагая, что это gradle
- Как правильно ли я избежать этой проблемы в будущем, чтобы другие люди не брали код, снова имеющий подобные проблемы? Нужно ли где-то помещать более подробные пояснения в скрипт gradle, или я не поставляю все перечисленные зависимости, чтобы следующий пользователь сам их вытянул?
- Это действительно проблема? Я предполагаю, что это проблема из-за того, что была создана моя собственная папка со структурой диска, но был ли какой-то флажок, который я пропустил, может быть, это настроило бы это правильно, не поднимая структуру личной папки? Как, например, ссылка на системную переменную среды для первого компонента, который попадает в «.gradle»
- Когда я создаю свое приложение для его доставки, будут ли эти ссылки или файлы JAR скомпилированы в последний файл, который я создаю таким образом когда на другой машине эта папка setup et c не будет проблемой?
Я полностью готов признать, что здесь работают некоторые компоненты, которые я не понимаю, но этот подкрался ко мне, так что я, вероятно, долго скучал по тому, где я совершил эту ошибку, таким образом определяя, как я это сделал мне тяжело
РЕДАКТИРОВАТЬ: скрипт сборки Gradle
plugins {
id 'java'
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.7'
id 'org.beryx.jlink' version '2.9.4'
id 'idea'
}
group 'com.bisit'
version '0.1.1'
repositories {
mavenCentral()
}
sourceCompatibility = 12
javafx {
version = "12"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
mainClassName = 'com.bisit.App'
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.5.2')
testImplementation('org.junit.jupiter:junit-jupiter-api:5.5.2')
testImplementation('org.junit.jupiter:junit-jupiter-params:5.5.2')
// https://mvnrepository.com/artifact/commons-validator/commons-validator
compile group: 'commons-validator', name: 'commons-validator', version: '1.4.0'
// https://mvnrepository.com/artifact/com.google.code.gson/gson
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.0'
// https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.12.1'
// https://mvnrepository.com/artifact/org.jetbrains/annotations
compile group: 'org.jetbrains', name: 'annotations', version: '17.0.0'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1'
// https://mvnrepository.com/artifact/org.clojure/java.jdbc
compile group: 'org.clojure', name: 'java.jdbc', version: '0.7.10'
// https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc
compile group: 'org.xerial', name: 'sqlite-jdbc', version: '3.28.0'
// https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc
compile group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '7.4.1.jre12'
// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.17'
// https://mvnrepository.com/artifact/org.freemarker/freemarker
compile group: 'org.freemarker', name: 'freemarker', version: '2.3.29'
// https://mvnrepository.com/artifact/com.openhtmltopdf/openhtmltopdf-core
compile group: 'com.openhtmltopdf', name: 'openhtmltopdf-core', version: '1.0.0'
// https://mvnrepository.com/artifact/com.openhtmltopdf/openhtmltopdf-pdfbox
compile group: 'com.openhtmltopdf', name: 'openhtmltopdf-pdfbox', version: '1.0.0'
// https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core
compile group: 'org.hibernate.orm', name: 'hibernate-core', version: '6.0.0.Alpha2'
// https://mvnrepository.com/artifact/com.h2database/h2
runtimeOnly group: 'com.h2database', name: 'h2', version: '1.4.199'
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '4.1.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.0'
}
jar {
manifest {
attributes 'Main-Class': 'com.bisit.Launcher'
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
jlink {
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'xmlanalyser'
}
}
test {
useJUnitPlatform()
}
tasks.withType(JavaExec) {
if (System.getProperty('DEBUG', 'false') == 'true') {
jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9099'
}
}