gpt4 book ai didi

java - 如何在jar中包含静态文件

转载 作者:行者123 更新时间:2023-11-30 02:05:06 25 4
gpt4 key购买 nike

我有一个 ant 构建,它只生成一个充满 html 页面的 jar。我想对 Maven 做同样的事情。我当前正在将文件复制到新文件夹,但文件不会添加到最终的 jar 中。当我运行命令
jar tf mavenjar.jar
我没有看到终端中列出的文件。它看起来像这样: click here
当我在 ant 生成的 jar 上运行相同的命令时,我看到以下内容: click here这是我的 pom

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>${basedir}/moveTheseFiles</directory>
<targetPath>${basedir}/newFileLocation</targetPath>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>


知道我可能缺少什么来将移动的文件包含到 jar 中吗?

最佳答案

有两种方法可以实现这一目标。遵循约定优于配置 - 或对其进行配置。

约定优于配置

将静态文件复制到 jar 中的最简单方法是使用默认文件夹 src/main/resources。您在此处添加的所有文件都将添加到您的 jar 文件中。您的 pom.xml 可以简化为:

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
</build>
</project>

非默认文件夹

当您确实需要将文件放在另一个文件夹中时,您的配置几乎没问题。只是缺少 includes 部分。你必须告诉maven包含指定文件夹中的所有文件。

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>try1</groupId>
<artifactId>try1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<finalName>mavenjar</finalName>
<resources>
<resource>
<directory>moveTheseFiles</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>

注意:您似乎想创建一个 Web 应用程序。也许您想创建一个 war 文件。要实现这一点,您只需设置

<packaging>war</packaging>

在你的pom.xml中。然后,所有 Web 资源(HTML 页面、CSS 等)应位于 src/main/webapp 下,并将复制到 war 的根文件夹中。请注意,在最终的 war 中,src/main/resources 中的文件将被复制到 WEB-INF/classes 中。

关于java - 如何在jar中包含静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51617058/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com