Избегайте прикрепления артефакта Maven, когда файл отсутствует

Я использую плагин Build Helper Maven, чтобы прикрепить изменения SQL в качестве артефакта развертывания, но плагин дает сбой, когда дополнительный артефакт отсутствует.

Не удалось установить артефакт org.test.app1:app1:sql:1.2.1: app1/src/main/database-source/1.2.1/dba.sql (Нет такого файла или каталога) -> [Справка 1]

Файл SQL присутствует для большинства версий приложений, но не для всех, поскольку второстепенные версии приложений могут не включать изменения SQL. Структура каталогов для файлов SQL включает их версии отдельно, как показано ниже:

src/
  main/
    database-source/
      1.0.0/
        dba.sql
      1.2.0/
        dba.sql
      1.2.1/
        -- no "dba.sql" file here since there aren't SQL changes in this version
      1.3.0/
        dba.sql

Конфигурация плагина Build Helper, которую я использую:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>3.0.0</version>
  <executions>
    <execution>
      <id>attach-artifacts</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>src/main/database-source/${project.version}/dba.sql</file>
            <type>sql</type>
          </artifact>
        </artifacts>
      </configuration>
    </execution>
  </executions>
</plugin>

Я читал о теге <skipAttach>, но не понимаю, как его использовать.

Как я могу молча пропустить лишний артефакт, когда файла нет (как в версии 1.2.1 выше)?


person Joe DiNottra    schedule 24.01.2020    source источник
comment
Почему вы подключаетесь через buildhelper, а не просто вставляете в src/main/resources?   -  person khmarbaise    schedule 24.01.2020
comment
@khmarbaise Я думаю, что содержимое src/main/resources будет включено в файл WAR (для парня из WebSphere), и мне это не нужно. Файл SQL должен передаваться администратору базы данных, совершенно отдельному dpmt, поэтому файл WAR и файл SQL должны быть упакованы отдельно. Хотя я могу ошибаться.   -  person Joe DiNottra    schedule 24.01.2020
comment
Может быть, Как активировать профиль Maven, если файл НЕ существует? полезно? (соответственно можно активировать и когда есть..)   -  person xerx593    schedule 24.01.2020
comment
@xerx593 xerx593 Я только что попробовал, но он говорит, что выражения не поддерживаются во время активации профиля. Я использовал <activation><file> <exists>src/main/database-source/${project.version}/dba.sql</exists> </file></activation>. Может что-то изменилось с 2015 года.   -  person Joe DiNottra    schedule 24.01.2020
comment
Тогда вам нужно просто сделать отдельный модуль и создать из него файл tar/tar.gz... или просто файл jar, который содержит только файлы sql....и если вы просто прикрепите файлы, они будут развернуты каждый отдельно файл, который делает его очень неудобным для обработки...   -  person khmarbaise    schedule 24.01.2020
comment
я вижу, @JoeDiNottra ... это проблема / блокировщик ... мы могли бы попытаться обойти это, но я чувствую, что есть более чистое / менее навязчивое решение ... вы только что не пробовали <skipAttach>true</skipAttach> (внутри тега конфигурации)?   -  person xerx593    schedule 24.01.2020
comment
... и текущее состояние: вы комментируете его в/из сборки/версии...? (тоже для КИ?)   -  person xerx593    schedule 24.01.2020
comment
Не лучше ли управлять изменениями в базе данных (которые, вероятно, все должны применяться в правильном порядке) с помощью такого инструмента, как Flyway?   -  person J Fabian Meier    schedule 24.01.2020
comment
@ xerx593 Я пробовал использовать skipAttach со значением true, и он всегда пропускает его, даже если он присутствует. Я пытаюсь добавить к нему некоторую логику (например, существующий тег), но происходит сбой.   -  person Joe DiNottra    schedule 24.01.2020
comment
... тогда, по крайней мере, элегантнее не-/комментировать только 1 свойство, чем весь плагин (в зависимости от версии/версии)   -  person xerx593    schedule 24.01.2020
comment
@ xerx593 Спасибо, тег skipAttach был решением. Немного сложно, но я смог полностью автоматизировать это. Спасибо еще раз.   -  person Joe DiNottra    schedule 26.01.2020