gradle: задача tar не создает tar.gz - PullRequest
0 голосов
/ 08 октября 2019

Привет, у меня есть задача tar, которую я сделал после просмотра многочисленных методов и некоторых сообщений SO.

task buildDist(type: Tar, dependsOn: jar) {
  print 'here'
  archiveName = 'xyz-' + version
  destinationDir = file('build/dist')
  extension = 'tar.gz'
  compression = Compression.GZIP

  from 'build/libs'
  include 'xyz.jar'
}
buildDist.mustRunAfter jar

У меня применен плагин java, а задача jar делает xyz.jarфайл доступен под build/libs. Каталог build/dist еще не существует, но я также попробовал new File("build/dist"). Это тоже не сработало - я даже указал на существующий каталог build - не работает. Я запускаю весь скрипт с /gradlew clean build. Печать в приведенном выше коде печатает.

1 Ответ

2 голосов
/ 08 октября 2019

Здесь я делаю несколько предположений, поскольку вы не опубликовали результаты работы Gradle.

Задача build - это обычная задача Gradle, которая сама по себе ничего не делает. Вместо этого это зависит от других задач. Если вы создаете свое собственное пользовательское задание и хотите включить его при выполнении build, вы должны добавить к нему зависимость. Если это не проблема, и вы действительно сделали это, пожалуйста, дайте более подробную информацию о том, что делает его «неработающим» при запуске build.

Если вы хотите протестировать свою задачу изолированно (например, чтобы убедиться, что он работает правильно, без запуска модульных тестов или чего-либо еще, что не имеет отношения к делу), просто запустите gradlew cleanBuildDist buildDist.

Примечание об операторе 'print' - он выполняет выполнение конфигурации этап, но это не значит, что вы можете использовать его для проверки, действительно ли задача действительно выполняется. Фактически, он, скорее всего, напечатает независимо от того, какую задачу вы выполняете. Если вы хотите напечатать что-то во время выполнения, вам нужно будет поместить это в блок doLast.

Также есть несколько других вещей, которые вы должны изменить:

  • Не рекомендуется использовать относительные ссылки. Вместо этого используйте свойство buildDir, чтобы получить абсолютную ссылку на каталог сборки.
  • Не используйте устаревшие методы, такие как archiveName и destinationDir. Вместо этого используйте archiveFileName и destinationDirectory.
  • Свойство extension также не рекомендуется, но оно игнорируется, если вы задаете полное имя архива самостоятельно. Так что просто удали это. Это также означает, что у вас отсутствует расширение полного имени.
  • from и include немного хрупки. Просто используйте from jar.archivePath, если вы хотите сжать jar приложения.

Пример:

task buildDist(type: Tar, dependsOn: jar) {
  archiveFileName = "${jar.baseName}-${version}.tar.gz"
  destinationDirectory = file("$buildDir/dist")
  compression = Compression.GZIP
  from jar.archivePath
}

build.dependsOn buildDist

Наконец, если вы хотите создать дистрибутив вашего приложения,запускается самостоятельно (со всеми необходимыми зависимостями), вам следует рассмотреть возможность использования дистрибутива * плагина и, возможно, также приложения плагина .

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