2015-09-14 2 views
1

Я создаю специальный тег, который я хочу сделать доступным как один файл jar. Кажется, у меня проблема с tld-файлом и его включение в процесс сборки.Какое правильное/рекомендуемое расположение файла TLD в проекте Maven

Моя текущая структура папок:

src 
license.md 
    main 
     java 
      my.package 
       class1.java 
       class2.java 
     resources 
      META-INF 
       customtag.tld 

Часть pom.xml (.tld файл не включается в процесс сборки по умолчанию)

<resources> 
<resource> 
       <directory>${basedir}/src/main/resources/META-INF</directory> 
       <targetPath>META-INF</targetPath> 
       <filtering>true</filtering> 
       <includes> 
        <include>customtag.tld</include> 
       </includes> 
</resource> 

Вышеприведенные работает, но:

  1. Это не выглядит хорошо для меня, особенно путь для каталога
  2. В дополнительной ветке NetBeans создается вид проекта. Излишне говорить, что это действительно выглядит дерьмовым. enter image description here
  3. Мне нужна эта запись в pom.xml, потому что иначе файл .tld не будет включен в банку.

Первый вопрос: Есть некоторые настройки в Maven, который будет включать в себя ${basedir}/src/main/resources/META-INF содержимого папки по умолчанию?


Альтернативный подход:

src 
license.md 
ckeditor.tld 
    main 
     java 
      my.package 
       class1.java 
       class2.java 

Часть pom.xml (.tld файл не включается в процесс сборки по умолчанию)

<resource> 
       <directory>${basedir}</directory> 
       <targetPath>META-INF</targetPath> 
       <filtering>true</filtering> 
       <includes> 
        <include>customtag.tld</include> 
       </includes> 
</resource> 

При таком подходе есть нет длинного пути в pom.xml, дополнительная ветка не создана в Netbeans p roject, но я не уверен, правильно ли это место. Я нашел много ссылок, подобных этому Where do I put the .tld file so that the resulting JAR file built with maven2 is properly packaged?, которые говорят, что файлы tld в коде проекта должны быть помещены в src/main/resources/META-INF.

Второй вопрос: Что такое правильный/рекомендуется расположение .tld файла внутри проекта Maven? Обратите внимание, что я спрашиваю о местоположении проекта, а не о местоположении в созданном файле jar (он должен быть META-INF, я это знаю).

ответ

0

Я думаю, что мне удалось исправить мою проблему, и вот ответы:

Первый вопрос: есть некоторые настройки в Maven, который будет включать в себя ${basedir}/src/main/resources/META-INF содержимое папки по умолчанию?

Я потратил изрядное время суммы поиска в Интернете, и я не могу сказать Нет там нет, то нужно писать записи в pom.xml, которые будут делать что.

Второй вопрос: Что такое правильное/рекомендуемое расположение файла TLD внутри проекта Maven?

Кажется, что правильное или рекомендуемое местоположение src/main/resources/META-INF в конце концов.

Решение моей проблемы: Я имел копирование моего файла .tld, определенного в <resources> на <build>level.

<resources> 
    <resource> 
     <directory>${basedir}/src/main/resources/META-INF</directory> 
     <targetPath>META-INF</targetPath> 
     <filtering>true</filtering> 
     <includes> 
      <include>customtag.tld</include> 
     </includes> 
    </resource> 
<resources> 

Я переместил этот ресурс в <resources> из maven-resources-plugin. Путь к каталогу все еще длинный, но это то, с чем я могу жить, особенно с этим подходом. Я могу сохранить свой файл .tld в src/main/resources/META-INF, и эта досадная дополнительная ветка в Netbeans Project View теперь исчезла.

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <encoding>UTF-8</encoding> 
     </configuration> 
     <executions> 
      <execution> 
       <id>copy-resources</id> 
       <phase>validate</phase> 
       <goals> 
        <goal>copy-resources</goal> 
       </goals> 
       <configuration> 
        <outputDirectory>${project.build.outputDirectory}</outputDirectory> 
        <resources> 
         <resource> 
          <directory>${basedir}/src/main/resources/META-INF</directory> 
          <targetPath>META-INF</targetPath> 
          <filtering>true</filtering> 
          <includes> 
           <include>customtag.tld</include> 
          </includes> 
         </resource> 
        </resources> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin>