Копировать файлы из одной целевой папки в другую в многомодульном проекте Maven - PullRequest
0 голосов
/ 02 декабря 2018

Я работаю над многомодульным проектом Maven.Один из модулей генерирует некоторые HTML-файлы в целевой папке, и мне нужно скопировать их в целевую папку другого модуля во время сборки.Ни один из них не является веб-приложением.

Я не уверен, как это сделать.Я нахожу HTML-файлы в банке и просто копирую их?Есть ли какой-нибудь плагин maven?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Единственным выходом из модуля Maven, на который вы должны полагаться, являются его артефакты (POM-файл, основной артефакт, например, JAR, WAR, ZIP, если вы действительно этого хотите, и его дополнительные присоединенные артефакты, к которым можно обратиться с помощью классификаторов, например,как test-jar).

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

Чтобы добавить дополнительный артефакт в модуль, который генерирует некоторыеHTML-файлы, вы можете использовать assembly:single goal плагина Maven Assembly.Вы должны будете определить дескриптор, чтобы определить, что и откуда должно быть включено (то есть ваши HTML-файлы).С такими параметрами, как appendAssemblyId (уже true), attach и classifier, вы можете контролировать, что это станет дополнительным прикрепленным артефактом этого модуля, от которого вы можете зависеть в другом модуле, указав классификатор.Допустим, ваш классификатор my-html-files, ваш второй модуль может зависеть от этих файлов HTML следующим образом:

<dependency>
  <groupId>my.group</groupId>
  <artifactId>first-module</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <classifier>my-html-files</classifier>
</dependency>

Это приведет к тому, что файлы (HTML) попадут в путь к классам.Если это не то, что вам нужно, возможно, вам придется сначала распаковать их.unpack mojo может быть полезным для этого.Я думаю, что этот является хорошим примером для выбора (обратите внимание, что зависимость выражается здесь как <artifactItem/>, а не как обычный <dependency/>).

0 голосов
/ 02 декабря 2018

Если ресурсы находятся внутри JAR другого модуля, вы можете использовать maven-dependency-plugin таким образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack-some-resources</id>
            <phase>initialize</phase>
            <goals>
                <goal>unpack</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>com.acme</groupId>
                        <artifactId>some-module</artifactId>
                        <type>jar</type>
                        <overWrite>true</overWrite>
                        <outputDirectory>${project.build.directory}/some-module-unpack</outputDirectory>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Чтобы это работало, com.acme:some-module должна быть зависимостью от модуля, который вы 'продолжаем работать.

Если ресурсы не находятся внутри JAR, вы можете использовать простой старый Ant, например:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-somes-resources</id>
            <phase>generate-test-resources</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <target name="copy-somes-resources">
                    <property name="dest.dir" value="${project.build.directory}/some-module-copy" />
                    <mkdir dir="${dest.dir}" />
                    <move todir="${dest.dir}">
                        <fileset dir="${project.basedir}/../some-module/target">
                            <include name="**/*.html" />
                        </fileset>
                    </move>
                </target>
            </configuration>
        </execution>
    </executions>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...