3
回答
按照jboot文档里打包到tomcat出现的问题
开发十年,就只剩下这套Java开发体系了   

按照jboot文档中方法将jboot项目打包到tomcat下 ,存在以下几个问题:

1、WEB-INF/web.xml ,这个WEB-INF是处于哪个目录下,是在资源文件目录吗?如果在资源文件目录,写法需要变更:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <attachClasses>true</attachClasses>
        <packagingExcludes>WEB-INF/web.xml</packagingExcludes> //这样写打包的时候找不到web.xml
    </configuration>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <attachClasses>true</attachClasses>
        <packagingExcludes>src/main/resources/WEB-INF/web.xml</packagingExcludes>//需要这样写
    </configuration>
</plugin>

2、打包后生成两个文件 xxx.war和xxx-classes.jar,后者是给别的项目引用的?

3、我使用了xxx.war文件部署到tomcat上,解压后的目录结构是这样的:

WEB-INF下的目录如下:

所有资源文件都在classes下

启动tomcat后访问项目,提示找不到html页面。

错误原因:我们使用render("/xxx/index.html")的时候是直接到项目根路径的,但现在这个index.html在classes下了,所以找不到? 要怎么解决此类问题?@海哥

举报
AIting
发帖于6个月前 3回/297阅

两种方案:

1、手动把classes下的资源文件copy到正确的目录来。

2、通过pom.xml配置maven插件,可以在maven编译的时候就自动移动过来也是没问题的。 

 

给出第二种方式的pom.xml配置代码:

 <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>run</goal>
            </goals>
            <configuration>
                <tasks>
                    <move file="${project.build.directory}/classes/htmls"  tofile="${project.build.directory}/${project.build.finalName}/htmls"/>
                </tasks>
            </configuration>
        </execution>
    </executions>
</plugin>

以上代码,假设你之前把html文件都放在resource下的htmls文件夹。

你好,我按你修改后的方式配置了web.xml文件,提示下面的错误,能说一下怎么解决吗?

Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project ctsi-qa: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1]

--- 共有 1 条评论 ---
AIting按照jboot文档配置应该没问题的 3周前 回复
顶部