java - 如果使用 jar,则从 jar 中解压文件,然后将提取的文件复制到目录中

标签 java eclipse maven maven-dependency-plugin

我有一个大型 Web 应用程序,它使用了许多 Maven 依赖项。它们作为 JAR 文件包含在内,但我希望有机会直接在 Eclipse 中将其中一些作为打开的项目使用。然后依赖项目与 m2e 链接。

需要从其中一些 JAR/项目中提取资源。

如何使用 Maven-dependency-plugin 做到这一点?如果 Artifact 包含为 JAR,请将其解压缩,然后将文件复制到所需目录。如果 Artifact 作为项目包含,则它存在于硬盘上并且可以直接访问和复制文件,而无需解压。

最佳答案

m2e-plugin既不能执行maven依赖插件,也不能自行拷贝源。

您可以使用maven dependency-plugin 从jar 中提取文件:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>yourSourceGroup</groupId>
                                <artifactId>yourSourceArtifact</artifactId>
                                <version>1.0.0</version>
                                <type>jar</type>
                                <includes>path/to/Files.whatsoever</includes>
                                <outputDirectory>${project.build.directory}/your/target/folder</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

(您可能需要根据需要更改阶段或目标。)

您可以从 eclipse 中对您的项目运行“右键单击->运行方式-> Maven 安装”,将文件复制到您需要的位置。

作为所有这些的替代方案,您可以在您的 web 应用程序中使用资源过滤器在运行时直接从 jars 中获取资源,例如。 G。来自 spring 框架。

关于java - 如果使用 jar,则从 jar 中解压文件,然后将提取的文件复制到目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788030/

相关文章:

maven - 使用 clean 重新运行失败的 Jenkins 构建

java - 我们如何使用java对azure服务总线队列中存在的消息添加延迟?

java - 将复选框监听器放入按钮监听器中

java - Android折叠工具栏在折叠时没有隐藏其他元素

java - 为什么这个 JOGL 程序无法运行?

maven - Apache文件无法连接到中央

java - Gson 中的 Stackoverflow 异常

java - 从外部访问 JFrame 内容

java - 在 : "Launching JCuc". java.lang.NullPointerException 期间发生内部错误

java - 从已编译的项目重建java项目