Как скопировать указанные файлы без структуры папок, используя оверлеи? - PullRequest
1 голос
/ 10 марта 2010

Я хотел бы скопировать просто "file.xml" без структуры папок, используя наложения, подобные этому:

    <overlays>
     <overlay>
      <groupId>com.mygroup</groupId>
      <artifactId>my_comp</artifactId>
      <includes>
        <include>WEB-INF/folder1/folder2/file.xml</include>
      </includes>
      <targetPath>WEB-INF/otherFolder</targetPath>
      <type>war</type>
    </overlay>
   </overlays>

Другими словами: скопируйте file.xml из WEB-INF / folder1 / folder2 / и поместите в WEB-INF / otherFolder

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 11 марта 2010

Я не нашел, как решить проблему с помощью оверлеев. Поэтому мне пришлось использовать два плагина maven-dependency-plugin и maven-war-plugin

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.1</version>
            <executions>
                <execution>
                <id>copy</id>
                <phase>process-resources</phase>
                <goals>
                    <goal>unpack</goal>
                </goals>
                <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>com.mygroup</groupId>
                        <artifactId>my_comp</artifactId>
                        <type>war</type>
                        <overWrite>true</overWrite>
                        <outputDirectory>${project.build.directory}/tmp</outputDirectory>
                        <includes>WEB-INF/folder1/folder2/file.xml</includes>
                </artifactItem>
            </artifactItems>
            </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1-beta-1</version>
        <configuration>
        <webResources>
            <resource>
                  <directory>${project.build.directory}/tmp/WEB-INF/folder1/folder2</directory>
                  <targetPath>WEB-INF/otherFolder</targetPath>
            </resource>
        </webResources>
        </configuration>
    </plugin>

Первый плагин, присоединенный к фазе process-resources . Второй вызывается на этапе package , когда все наложения объединены. Наложения применяются со стратегией первого выигрыша (следовательно, если файл был скопирован оверлеем, он больше не будет копироваться) Если я скопировал файл file.xml (через плагин), тогда не будет перезаписано никаким оверлеем.

Это так сложно!

0 голосов
/ 10 марта 2010

Насколько мне известно, это невозможно при наложении, содержимое наложения добавляется "как есть" в targetPath (по умолчанию это корневая структура веб-приложения).

Если вы хотите сделать file.xml доступным в другом месте, вам придется настроить его местоположение в my_comp WAR до наложения .

...