如何在JAR中包含静态文件 [英] how to include static files in jar

查看:12
本文介绍了如何在JAR中包含静态文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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中的最简单方法是使用默认文件夹。您在那里添加的所有文件都将添加到您的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中。然后是所有网络资源(HTMLPages、CSS...)应位于src/main/webapp下,并将被复制到WAR的根文件夹中。请注意,src/main/resources中的文件将被复制到生成的WAR中的WEB-INF/classes

这篇关于如何在JAR中包含静态文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆