为啥 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>
【讨论】:
我发现这会消除常规资源包含,除非您也为此执行第二个<resource>
块。
@end-user ...
后面的resource
块表示这只是一个附加资源,而不是替换任何现有资源。但是,我在资源块之前添加了另一组省略号,希望能更清楚地说明这一点。
不,我理解省略号的意思是表示可能存在其他元素。我的建议是(我相信)Maven 的默认行为,没有指定<resources>
块,是包含src/main/resources
中的任何内容。但是,如果您将其定向到 webapp
,它会覆盖默认值,要求您同时指定两者(如果您需要两者)。【参考方案2】:
尝试将 .jsp 放到 src/main/resources 中,Maven 会忽略 src/main/java 中除 .java 之外的所有文件
【讨论】:
嗯,刚试过。似乎也没有将 src/main/resources 目录添加到 jar 中。我正在使用 jar 命令检查内容 使用$ mvn clean package
创建jar 文件,然后测试其内容。您配置的插件之一导致您看到的问题。从没有<plugins>
开始,然后重新添加每个插件,直到它再次中断。然后修复该特定插件的配置。
所以为了让 src/main/resources 文件夹显示在我的 jar 中,我实际上必须将该文件夹添加到 pom 中,如下所示:<build><resources><resource>src/main/resources</resource></resources>...</build>
src/main/resources 是默认值。进入 jar 的不是目录本身,而是它的内容。如果您将 1.jsp 放在 src/main/resources 中,您将在 jar 根目录中获得 1.jsp以上是关于为啥 maven 不在我的 jar 中包含 JSP 文件?的主要内容,如果未能解决你的问题,请参考以下文章
收到一个主 jar 文件,其中包含需要在类路径中的其他 jar 文件。在我的 Maven 项目中包含这个主 jar 的最佳方法是啥?
使用 Maven Surefire 运行依赖项 jar 中包含的 JUnit 测试