为啥 maven 不在我的 jar 中包含 JSP 文件?

Posted

技术标签:

【中文标题】为啥 maven 不在我的 jar 中包含 JSP 文件?【英文标题】:Why doesn't maven include the JSP files in my jar?为什么 maven 不在我的 jar 中包含 JSP 文件? 【发布时间】:2013-03-18 10:47:54 【问题描述】:

我有一个嵌入式码头(8.1.8 版)网络应用程序,我将其打包为 jar,并使用 JSP 作为其前端。它是用 Maven 版本 3.0.3 构建的。问题是当我这样做时:mvn package 它包括除了我的 *.jsp 文件之外的所有内容。我尝试将它们迁移到许多不同的地方,但没有成功。

我尝试将 <include>src/main/java/**/*.jsp</include> 添加到我的 pom.xml 的 maven-compiler-plugin 部分。但这也没有效果。

有没有办法确定 jsp 文件被包含在内?

【问题讨论】:

你是用maven jar plugin还是maven war plugin创建jar文件? 我正在使用maven-jar-plugin 【参考方案1】:

我的解决方案是将jsp文件添加到src/main/webapp并在pom文件中添加以下sn-p:

<build>
    <resources>
      ...
      <resource>
        <directory>src/main/webapp</directory>
      </resource>
      ...
    </resources>
    ...
</build>

【讨论】:

我发现这会消除常规资源包含,除非您也为此执行第二个 &lt;resource&gt; 块。 @end-user ... 后面的resource 块表示这只是一个附加资源,而不是替换任何现有资源。但是,我在资源块之前添加了另一组省略号,希望能更清楚地说明这一点。 不,我理解省略号的意思是表示可能存在其他元素。我的建议是(我相信)Maven 的默认行为,没有指定&lt;resources&gt; 块,是包含src/main/resources 中的任何内容。但是,如果您将其定向到 webapp,它会覆盖默认值,要求您同时指定两者(如果您需要两者)。【参考方案2】:

尝试将 .jsp 放到 src/main/resources 中,Maven 会忽略 src/main/java 中除 .java 之外的所有文件

【讨论】:

嗯,刚试过。似乎也没有将 src/main/resources 目录添加到 jar 中。我正在使用 jar 命令检查内容 使用$ mvn clean package 创建jar 文件,然后测试其内容。您配置的插件之一导致您看到的问题。从没有&lt;plugins&gt; 开始,然后重新添加每个插件,直到它再次中断。然后修复该特定插件的配置。 所以为了让 src/main/resources 文件夹显示在我的 jar 中,我实际上必须将该文件夹添加到 pom 中,如下所示:&lt;build&gt;&lt;resources&gt;&lt;resource&gt;src/main/resources&lt;/resource&gt;&lt;/resources&gt;...&lt;/build&gt; src/main/resources 是默认值。进入 jar 的不是目录本身,而是它的内容。如果您将 1.jsp 放在 src/main/resources 中,您将在 jar 根目录中获得 1.jsp

以上是关于为啥 maven 不在我的 jar 中包含 JSP 文件?的主要内容,如果未能解决你的问题,请参考以下文章

收到一个主 jar 文件,其中包含需要在类路径中的其他 jar 文件。在我的 Maven 项目中包含这个主 jar 的最佳方法是啥?

使用 Maven Surefire 运行依赖项 jar 中包含的 JUnit 测试

在 Maven 项目中包含本地 jar 文件 - 找不到文件

如何在 Maven 项目中包含本地 jar 文件 [重复]

使用 Maven 在可执行 JAR 中包含签名库

如何在 Maven 生成的 jar 中包含特定文件夹?