Maven webapp - исключить java-ресурсы из jar-кода, полученного из web-приложения - PullRequest
2 голосов
/ 20 марта 2012

У меня довольно специфическая проблема. Я создал веб-приложение и хочу создать jar-сборку для классов в дополнение к веб-войне. Нет проблем, я сделал это:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <attachClasses>true</attachClasses>
      </configuration>
    </plugin>

При этом ресурсы из src / main / resources попадают в банку. Но так как эти ресурсы предназначены только для этого веб-приложения, я не хочу, чтобы они были в банке. Я мог бы переместить их в папку webapp src, но мне нужно отфильтровать файл свойств, поэтому он должен быть папкой ресурсов и поэтому включается в сборку war / jar.

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Я попытался исключить их, настроив плагин maven-jar-*:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <excludes>
        <exclude>**properties</exclude>
      </excludes>
    </configuration>
  </plugin>

Отлично работает для единственной сборки jar от jar: jar, но, к сожалению, не для сборки jar, выполняемой на этапе установки.

Есть ли способ применить эти конфигурации к плагину maven-war?

Я знаю, что мог бы расширить конфигурацию, добавив выполнения для сборки jar, локальной установки и развертывания в удаленном хранилище, но это немного запутало.

Любая помощь приветствуется.

1 Ответ

2 голосов
/ 21 марта 2012

Один из способов сделать это - переместить исходные коды Java в отдельный проект, который затем включается в проект WAR в качестве зависимости. Таким образом, вы можете контролировать, что входит в файл JAR, и вы можете сохранить другие файлы в проекте WAR, применить фильтрацию и т. Д.

Я обнаружил, что разделение функциональности на мелкозернистые проекты часто является лучшим способом решения проблем, вместо того, чтобы настраивать несколько плагинов со сложной конфигурацией, чтобы делать то же самое. Если это требует сложной настройки, это, вероятно, неправильный путь. Постарайтесь сделать это простым: -)

...