Как мне создать 'fatjar' в многомодульном проекте автоматизации селена? - PullRequest
0 голосов
/ 09 февраля 2020

Я занимался этим несколько дней и перепробовал много вещей, но, похоже, не могу этого понять. Я конвертирую многомодульный проект в intellij из maven в gradle и имею следующую структуру:

com.automation

  • build.gradle

  • API

    • src / main / Authorization. java
    • src / test / LoginAuth. java
    • build.gradle
  • pageobjects

    • src / main / LoginPage_Method. java
    • build .gradle
  • testclasses

    • src / test / LoginTests. java
    • build.gradle
task fatJar(type: Jar) {
        archiveBaseName = project.jar_name
        zip64 = true

        manifest {
            attributes 'Main-Class': 'My Main Class'
        }

        from sourceSets.test.output
        from { configurations.testRuntime.collect { it.isDirectory() ? it : zipTree(it) } }
        with jar
    }

В моем файле com.automation > build.gradle я пытаюсь создать фуджар, поэтому, когда я запускаю java -jar {nameofJar}.jar, банка работает так, как должна. Проблема, которую я считаю, заключается в том, что при создании файла jar зависимости не создаются (я знаю это, потому что при извлечении jar я не вижу файлы classpath), поэтому при попытке запустить файл jar я получаю исключение :

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/runner/notification/RunListener
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.junit.runner.notification.RunListener
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more

Любая помощь, чтобы понять это очень ценится.

1 Ответ

0 голосов
/ 09 февраля 2020

Мне удалось выяснить проблему. Для тех, у кого такая же проблема, я заменил:

из {configurations.testRuntime.collect {it.isDirectory ()? it: zipTree (it)}}

с

из {configurations.runtimeClasspath.collect {it.isDirectory ()? it: zipTree (it)}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...