为了账号安全,请及时绑定邮箱和手机立即绑定

如何从maven中的外部jar复制资源?

如何从maven中的外部jar复制资源?

元芳怎么了 2021-09-29 10:39:44
我有一个基于 maven 的多模块项目,其模块结构如下:-- --A   pom.xml --B   pom.xml-pom.xml我在父.pom 文件中添加了一个依赖项。现在我想使用来自A模块中添加的依赖项的资源。有没有办法使用 maven仅将外部资源复制到A模块?我尝试为此使用maven-remote-resources-plugin,但它没有看到外部资源。
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

所以我找到了下一个解决方案。它不是最佳的,但它可以工作并且可以做我想要的。它从外部 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> 



查看完整回答
反对 回复 2021-09-29
?
月关宝盒

TA贡献1772条经验 获得超5个赞

您必须向应该使用它的模块添加依赖项。然后你可以使用maven 依赖插件从该依赖中获取资源。


查看完整回答
反对 回复 2021-09-29
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信