Как скопировать ресурсы из внешнего jar в maven? - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть многомодульный проект на основе maven со следующей структурой модуля:

--
 --A
   pom.xml
 --B
   pom.xml
-pom.xml

Я добавил зависимость в файл parent .pom.Теперь я хочу использовать ресурсы из этой добавленной зависимости в модуле A .

Можно ли скопировать только внешние ресурсы в модуль A , используя maven?

Я попытался использовать для этого maven-remote-resources-plugin , но он не видит внешние ресурсы.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018

Вы можете определить зависимости модулей A и B в родительском POM в разделе.Затем назовите их в дочернем POM (A или B) в разделе.Таким образом, вы можете убедиться, что во всех дочерних модулях используется только одна версия данной зависимости.

Вся информация об управлении зависимостями в maven документирована в https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

0 голосов
/ 20 сентября 2018

Итак, я нашел следующее решение.Это не оптимально, но работает и делает то, что я хочу.Он извлекает файлы ресурсов из внешнего jar-файла (зависимость maven) и копирует его в ресурсы пути к классам.

Это не оптимально, поскольку мне нужно удалить пустой каталог после перемещения файлов в нужное место.

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>unpack</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.group.id</groupId>
                                    <artifactId>artifact-id</artifactId>
                                    <version>${version}</version>
                                    <type>jar</type>
                                    <overWrite>false</overWrite>
                                    <includes>**/frontend/*.json</includes>
                                </artifactItem>
                            </artifactItems>
                            <outputDirectory>${project.build.directory}/classes/i18n</outputDirectory>
                            <overWriteReleases>true</overWriteReleases>
                            <overWriteSnapshots>false</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.coderplus.maven.plugins</groupId>
                <artifactId>copy-rename-maven-plugin</artifactId>
                <version>1.0</version>
                <executions>
                    <execution>
                        <id>copy-and-rename-file</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>rename</goal>
                        </goals>
                        <configuration>
                            <sourceFile>${project.build.directory}/classes/i18n/META-INF/resources/i18n/frontend
                            </sourceFile>
                            <destinationFile>${project.build.directory}/classes/i18n/frontend/
                            </destinationFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <target>
                                <delete dir="${project.build.outputDirectory}/i18n/META-INF" includeemptydirs="true"/>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build> 
0 голосов
/ 19 сентября 2018

Вы должны добавить зависимость к модулю, который должен его использовать.Затем вы можете использовать плагин зависимостей maven для получения ресурсов из этой зависимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...