Maven включает нефильтрованный файл ресурсов в jar, а не в target / classes - PullRequest
2 голосов
/ 20 января 2012

Учитывая,

Apache Maven 3.0.3 и файл src / main / resources / application.properties с

 project.root=${basedir}

и файл pom.xml с

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

Когда я запускаю «mvn clean package», я получаю файл target / classes / application.properties с фильтрацией

project.root=/path/to/MyProject

Однако файл application.properties, который включен в jar не был отфильтрован.

project.root=${basedir}

Почему файл application.properties, включенный в jar, не фильтруется?Согласно документации , отфильтрованные файлы свойств из target / classes должны быть включены в jar.

Ответы [ 2 ]

1 голос
/ 05 февраля 2014

Спасибо за создание этого поста, Боб. Мое решение выглядело немного иначе, возможно, потому что я использую более позднюю версию плагина:

<plugin>
  <groupId>org.apache.felix</groupId>
  <artifactId>maven-bundle-plugin</artifactId>
  <version>2.4.0</version>
  <extensions>true</extensions>
  <configuration>
    <instructions>
      <!--
      The plugin must be instructed to retrieve the filtered files from the "target/classes" directory.
      Otherwise, it will copy the unfiltered versions in "src/main/resources" to the JAR.
      -->
      <Include-Resource>{maven-resources}, {filtered-file.properties=target/classes/filtered-file.properties}</Include-Resource>
    </instructions>
  </configuration>
</plugin>
1 голос
/ 26 января 2012

Самообслуживание.

Необходимо добавить <Include-Resources>{maven-resources}</Include-Resources> к конфигурации maven-bundle-plugin .

        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>1.4.3</version>
            <extensions>true</extensions>
            <configuration>
                <manifestLocation>META-INF</manifestLocation>
                <instructions>
                    <Include-Resources>{maven-resources}</Include-Resources>
                    <Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
                    <Bundle-Version>${project.version}</Bundle-Version>
                    <Export-Package>${bundle.namespace}.*;version="${project.version}"</Export-Package>
                    <Import-Package>
...