2013-08-29 2 views
4

Я пытаюсь добавить файл лицензии ко всем моим флягам при выполнении сборки maven. У меня есть лицензия на каждый файл класса, но я хочу добавить License.txt в каждую папку META-INF в каждой банкеДобавление файла в jar во время сборки maven

В моем проекте есть мастер-поум, в котором есть полдюжины модулей, тогда эти модули имеют модули их и, в конечном итоге, получить проект, который генерирует/target/< .jar-файл>. Лицензии build и class level работают, я просто хочу добавить физический License.txt в папку META-INF.

Мой файл хранится (относительно главной POM) в файле /src/resources/src-license.txt. Мне действительно нужен автоматический метод, чтобы гарантировать, что если/когда лицензия изменится, я должен обновить 50 файлов, я могу просто обновить тот, который затем скопирован в другие места.

Я попытался с помощью

<build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
    <resource> 
     <directory>src/resources</directory> 
     <targetPath>/META-INF</targetPath> 
     <includes> 
     <include>src-license.txt</include> 
     </includes> 
    </resource> 
    </resources> 
.... 
</build> 

Но это не кажется, сделать трюк. Я также пытаюсь использовать некоторые альтернативы выходному пути, такие как $ {project.build.outputDirectory}/META-INF или */META_INF, также безрезультатно. У кого-нибудь есть опыт в том, как это сделать? Спасибо

Кроме того, я использую плагин maven-license-plugin, чтобы гарантировать, что каждый файл класса имеет информацию о лицензии, вставленную в него, и это работает по назначению. Но опять же, что внутри файлов классов, я ищу внешний файл .txt в каждом < * .jar>/META-INF/

+0

У вас есть многомодульный проект с 'src-license.txt' в родительском проекте. Вы хотите скопировать его во все подмодульные баночки. Правильно? –

+0

есть. это точно. Я хочу, чтобы этот файл лицензии появлялся в папке META-INF каждого сгенерированного баннера. –

+0

Кажется, что путь 'src/resources' недопустим для подмодулей. Попробуйте использовать что-то вроде '$ {project.parent.relativePath}/src/resources'. –

ответ

3

Использование ресурсов родительского родителя по крайней мере затруднено (что, если у вас есть комплекс структура каталогов?).

Простым и понятным способом может быть создание отдельного модуля, содержащего файл src-license.txt. Затем сделайте его зависимым от ваших модулей и разархивируйте его (зависимость: unpack-dependencies). @ Generate-resources phase, внутри target/classes.

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>unpack-license</id> 
       <phase>generate-resources</phase> 
       <goals><goal>unpack</goal></goals> 
       <configuration> 
        <artifactItems> 
         <artifactItem> 
          <groupId>com.acme</groupId> 
          <artifactId>com.acme.license</artifactId> 
          <version>${project.version}</version> 
         </artifactItem> 
        </artifactItems> 
        <outputDirectory>${project.build.outputDirectory}</outputDirectory> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
+0

Спасибо за предложение. Я дал ему вихрь, но безрезультатно. Я смог получить новый модуль с лицензией. И добавьте его как зависимость, однако процесс распаковки зависимостей - это то, где я споткнулся. Во время сборки maven извлекли файлы, но все они отправились либо к целевым/зависимым, либо к целевым/классам, а не к окончательному .jar, я не смог найти способ вставить один файл, который мне нужен, в банку. –

+0

Если лицензия заканчивается внутри цели/классов, * до * фазы пакета, этого было бы достаточно. Что-то вроде того, что я только что поставил в своем ответе, должно работать. – Tome

+0

Хорошо. Сначала спасибо Тому. Я повторил этот подход после долгого уик-энда и получил его работу! Я определенно не правильно делал фазы. Maven все еще меня озадачивает, но я все больше и больше участвую. Я добавил/META-INF в теги выходного каталога, чтобы отсортировать файл. И мой источник для файла, необходимый для тегов ресурсов. В целом, он очень хорошо себя зарекомендовал. Снова, спасибо –

Смежные вопросы