Очистка пути к классам, каков правильный подход, чтобы избежать этой проблемы в будущем? - PullRequest
0 голосов
/ 29 марта 2020

Я строю проект на основе java 12, используя Gradle в качестве инструмента для сборки, и все идет хорошо, пока я не поделился кодом в репозитории, чтобы другой разработчик мог его посмотреть. Случайно кажется, что я поместил много jar-файлов в classpath как зависимости в проекте

enter image description here

enter image description here

по общему признанию, это будет выглядеть ужасно, я уверен, что некоторые более компетентные разработчики там, но я не делал этого раньше, поэтому моя вероятная ошибка ладьи 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'
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...