Micronaut - плагин shadow fat-jar не работает с корпоративным репо - PullRequest
0 голосов
/ 06 ноября 2019

Я использую Micronaut Framework для проекта, и Micronaut CLI генерирует проект с помощью com.github.johnrengelman.shadow gradle плагина, который отлично работает, когда я запускаю флягу, используя-

$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar

build.gradle -

plugins {
  id "com.github.johnrengelman.shadow" version "5.0.0"
}

...

shadowJar {
    mergeServiceFiles()
}

Проблема в том, что плагин com.github.johnrengelman.shadow по какой-то причине не работает с Jenkins , и я подозреваю, что он недоступен внаше корпоративное репо (и не может быть добавлено) . Несмотря на то, что я могу создать исполняемый fat-jar, используя jar задачу из плагина java, он завершается с ошибкой -

$ java -Dmicronaut.environments=E1 -jar build/appBundle/app.jar
16:12:22.662 [main] INFO  i.m.context.env.DefaultEnvironment - Established active environments: [E1]
16:12:22.863 [main] INFO  io.micronaut.runtime.Micronaut - No embedded container found. Running as CLI application

build.gradle -

plugins {
  id "java"
}

...

jar {
  manifest {
    attributes "Main-Class": "axp.payments.pci.dss.PaymentsPciDssDispatcher"
  }

  from {
    configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
  }
}

Основной вопрос - почему плагин com.github.johnrengelman.shadow не работает с корпоративным хранилищем?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Решено

Проблема заключалась в том, что блок плагина {...} не имеет доступа к частному / корпоративному репо.

Решено путем возврата определения плагина из plugins{...} к более старому способу определения, который apply plugin...

Добавлен более старый способ применения плагина (который является единственным способом заставить его работать с частным репо) -

apply plugin: "com.github.johnrengelman.shadow"

Удалено (не имеет доступа к частному / корпоративному репо) -

plugins {
  id "com.github.johnrengelman.shadow"
}

Для получения дополнительной информации оформите первый комментарий в этом ТАК вопрос .

0 голосов
/ 06 ноября 2019

Есть один способ обойти эту раздражающую ситуацию.

Вы можете загрузить исходный код shadow jar из GitHub и добавить его в свой репозиторий приложений Micronaut в <project-root-folder>/buildSrc каталог.

Вы можете следовать этому руководству, чтобы узнать, как создать собственный плагин https://guides.gradle.org/writing-gradle-plugins

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

Последняя мысль. Компания, которая не позволяет вам использовать прокси-сервер с открытым исходным кодом, такой как этот плагин в корпоративном хранилище, мешает вам в работе. Возможно, вы захотите поговорить с вашим менеджером.

Мой описанный обходной путь ужасен, поскольку

  • вам необходимо обновить плагин на основе исходного кода
  • , скорее всего, это будеточень скоро устарела
  • это просто не способ сделать это

Удачи. Надеюсь, это поможет.

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