Подтвердить что ты не робот

Копирование нескольких каталогов ресурсов в независимые целевые каталоги с помощью maven

Плагин ресурсов Maven:

Эта цель требует, чтобы вы настраивали ресурсы для копирования и указывали outputDirectory.

Скопируйте два (или более) внешних каталога ресурсов в basedir в каталог вывода сборки с помощью maven (см. blah и uggh).

${basedir}/ 
  - pom.xml
  - blah/
  - uggh/
  - src/
    - main/..
    - test/..
  - target/
    - classes/..
    - blah/
    - uggh/

Например, задайте структуру каталогов выше copy blah и uggh в целевой каталог, используя maven. Скопировать одно или другое, однако плагин принимает только один файл outputDirectory. Если вы укажете каталог target и оба каталога как ресурсы, то содержимое каждой директории будет скопировано в target, но не сами каталоги.

Дополнительное использование плагина перезаписывает исходное. Кроме того, я попытался указать весь basedir и включить только нужные каталоги. Это ничего не копирует.

Вот пример копирования одного каталога:

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/blah</outputDirectory>
          <resources>
            <resource>
                <directory>blah</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>
4b9b3361

Ответ 1

Здесь заканчивается файл:

<outputDirectory>${basedir}/target/blah</outputDirectory>

Здесь он копируется из:

<directory>src/main/otherresources</directory>

Там будет тег <include> или <includes>, чтобы сообщить имя файла (ов)

Множественные

Для нескольких папок вам нужно несколько <execution> с разными <id>:

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources-1</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/blah</outputDirectory>
          <resources>
            <resource>
                <directory>blah</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
      <execution>
        <id>copy-resources-2</id>
        <phase>validate</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target/ughh</outputDirectory>
          <resources>
            <resource>
                <directory>ughh</directory>
                <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>

Ответ 2

Для меня это хорошо работает в Maven 3:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.5</version>
            <executions>
                <execution>
                    <id>custom-resources</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>                                        
                            <resource>
                                <targetPath>${basedir}/target/blah</targetPath>
                                <directory>blah</directory>
                                <filtering>true</filtering>
                            </resource>             
                            <resource>
                                <targetPath>${basedir}/target/uggh</targetPath>
                                <directory>uggh</directory>
                                <filtering>false</filtering>
                            </resource>              
                        <encoding>UTF-8</encoding>
                    </configuration>            
                </execution>
            </executions>
        </plugin>

Ответ 3

Это более простое решение, которое я нашел, и оно работает...

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.7</version>
            <configuration>   
            </configuration>
        </plugin>
    </plugins> 
    <resources>
        <resource>
            <directory>${basedir}/src/main/java/org/mc2/mymusic/gui/main/Menu/resources</directory>
            <targetPath>${basedir}/target/classes/org/mc2/mymusic/gui/main/Menu/resources</targetPath>
            <filtering>false</filtering>
        </resource>
    </resources>  
</build>

Marco

Ответ 4

Вы можете использовать шаблоны ant -style

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.7</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}</outputDirectory>
                <resources>
                    <resource>
                        <directory>${basedir}</directory>
                        <includes>
                            <include>blah/**</include>
                            <include>uggh/**</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Ответ 5

Чтение вашего примера. Я не думаю, что вам нужно включить & настроить плагин maven-resource. Просто добавьте эти элементы ресурсов в <build><resources/> -tag. Смотрите http://maven.apache.org/ref/3.1.1/maven-model/maven.html#class_resource, которые можно использовать в других тегах.

Ответ 6

    <resources>
        <resource>
              <directory>${basedir}/src/scripts</directory>
              <includes>
                  <include>data-octopus.ps1</include>
              </includes>
              <targetPath>${basedir}/target/data</targetPath>
        </resource>
        <resource>
              <directory>${basedir}/src/scripts</directory>
              <includes>
                  <include>service-octopus.ps1</include>
              </includes>
              <targetPath>${basedir}/target/service</targetPath>
        </resource>
    </resources>

    </plugins>
        ...
    </plugins>

Ответ 7

        <resources>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <targetPath>${basedir}/target</targetPath>
          </resource>
          <resource>
            <directory>src/main/resources</directory>
            <filtering>false</filtering>
            <targetPath>${basedir}/target/classes</targetPath>
          </resource>
       </resources>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>jks</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
                <executions>
                    <execution>
                        <id>copy-resources-1</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                    </execution>
                </executions>
            </configuration>
        </plugin>
   </plugins>

Maven - Copying resources into multiple targets

Ответ 8

Maven скрывает все, чтобы было проще кодировать. Есть несколько способов добиться этого.

  1. Отредактируйте выполнение по умолчанию в плагине ресурсов. (Самый простой) Это также может быть написано с использованием тега include или других ресурсов.
  2. Пишите разные исполнения в плагине ресурсов.
  3. Используйте плагин Antrun. (Вы могли бы также написать всю сборку в муравье)
  4. Maven Копирование-переименование плагина.
  5. И много других способов, которые я здесь не упоминаю....

Изменить значение по умолчанию plugin--

<resources>
    <resource>
        <directory>${basedir}<directory>
        <includes>
            <include>blah</include>
            <include>ughh</include>
        </includes>
    <resource>
<resources>
<plugins>
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
            <outputDirectory>${basedir}/target</outputDirectory>
        </configuration>
    </plugin>
</plugins>