Как можно правильно собрать артефакт?

Привет!

Как настроить проект Gradle так, чтобы собранный .jar файл можно было запускать на другом компьютере? Также неясно, в каком каталоге должен находиться манифест - в /src/main/java или просто в /src?
  • 22 декабря 2023 г. 13:17
Ответы на вопрос 2
Для того чтобы собранный .jar файл можно было запускать на другом компьютере с помощью Gradle, вам потребуется настроить ваш проект правильным образом. Вот несколько шагов, которые помогут вам в этом:

1. Убедитесь, что в файле build.gradle вашего проекта присутствует конфигурация, где указано, что ваш проект является приложением Java:

```groovy
apply plugin: 'java'
```

2. Добавьте зависимости, необходимые для вашего проекта, в блок `dependencies` файла build.gradle. Например, если ваш проект использует библиотеку log4j, то добавьте следующую зависимость:

```groovy
dependencies {
    implementation 'log4j:log4j:2.14.1'
}
```

3. Укажите в файле build.gradle имя вашего основного класса (того, который содержит метод `main`) в блоке `mainClassName`. Например:

```groovy
jar {
    manifest {
        attributes 'Main-Class': 'com.example.MainClass'
    }
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}
```

В этом примере 'com.example.MainClass' должно быть заменено на имя вашего основного класса.

4. Запустите команду `gradle build` для сборки проекта. После успешного завершения сборки, вам будет доступен .jar файл в каталоге build/libs вашего проекта.

Что касается манифеста, то он должен находиться в директории `/src/main/resources/META-INF`. Создайте директорию `META-INF` внутри `/src/main/resources`, и поместите ваш манифест-файл в эту директорию. 

Надеюсь, это поможет вам правильно собрать артефакт и запустить его на другом компьютере с помощью Gradle.
Получаеся так. 
Манифест положил в /src. При создании арта в /out образуются /artifacts и /production/resources. В ресах у меня лежит config.properties и еще 2 файла с моими данными. В проперти указаны пути к ним. И походу запускаемый jar всего этого добра не видит.
Запуская из терминала получаю:
Это дело корнями упирается сюда:
В IDE всё работает, а jar нет. Как быть? Недает покоя /production с ресами. Как вообще всё это объеденить?
Похожие вопросы