在IDEA上部署Web项目至Tomcat上,虽然Facets和Artifacts都配置完备,然而webapp
中的内容却无法被构建进相应的目录中,其原因在于iml
文件。
1. 项目结构
pom.xml
中配置打包方式<packaging>war</packaging>
-
part2-webpart2-web
,无web.xml
-
spring-mvc-learningspring-mvc-learning
,有web.xml
2. Facets配置
Facets用于配置Web项目结构,用于之后的Artifacts中:
-
Deployment Descriptors
: 配置web.xml
文件位置 -
Web Resource Directories
: 配置webapp
目录,其中包括css/js/jsp
等资源
具体配置如下:
-
Facets:
Facets: part2-webpart2-web
-
Facets:
Facets: spring-mvc-learningspring-mvc-learning
3. Artifacts
-
Artifacts:
Artifacts: part2-webpart2-web
Output directory:PARENT_FOLDER/part2-web/target/part2-web-1.0-SNAPSHOT
-
Artifacts:
Artifacts: spring-mvc-learningspring-mvc-learning
Output directory:PARENT_FOLDER/spring-mvc-learning/target/spring-mvc-learning-1.0-SNAPSHOT
以下说明以part2-web:war exploded
为例:
通常在Modules中,每个module的Compiler output选择的都是Use module compile output path,其对应配置大致如下:
-
Output path:
PARENT_FOLDER/part2-web/target/classes
-
Test output path:
PARENT_FOLDER/part2-web/target/test-classes
Available Elements:
Available Elements中的part2-web
,包含以下几部分:
-
'part2-web' compile output
: 来源于Modules中配置的Output path/Test output path
相关内容。可双击或右键选择Put into WEB-INF/classes
加入到左边的Output Layout
中 -
Maven: **
: 来源于Libraries中module(part2-web
)所依赖的jar
包。可选择全部所依赖的jar
包,然后右键选择Put into WEB-INF/lib
加入到左边的Output Layout
中 -
Web facet resources
: 来源于Facets中配置的内容,如:web.xml
,webapp
包含的资源。可双击或右键选择Put into Output Root
加入到左边的Output Layout
中
对于META-INF/MANIFEST.MF
文件会在编译后生成。
part2-web:war
引用的是part2-web:war exploded
,可以不需要。
4. iml
iml
文件中的配置,关系到Facets所配置的内容是否会被加入到PARENT_FOLDER/part2-web/target/part2-web-1.0-SNAPSHOT
/PARENT_FOLDER/spring-mvc-learning/target/spring-mvc-learning-1.0-SNAPSHOT
目录下
part2-web
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<webroots>
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
</webroots>
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
</module>
spring-mvc-learning
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="FacetManager">
<facet type="web" name="Web">
<configuration>
<descriptors>
<deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/src/main/webapp/WEB-INF/web.xml" />
</descriptors>
<webroots>
<root url="file://$MODULE_DIR$/src/main/webapp" relative="/" />
</webroots>
<sourceRoots>
<root url="file://$MODULE_DIR$/src/main/java" />
<root url="file://$MODULE_DIR$/src/main/resources" />
</sourceRoots>
</configuration>
</facet>
</component>
</module>
5. 部署
Deployment-
part2-web
对应的Application context
为/
-
spring-mvc-learning
对应的Application context
为/mvc
然后运行tomcat即可
网友评论