我的项目有两层pom.xml,太复杂,这里解释的不对,我发现第二层target中有class文件,第一层out/artifacts中没有class文件,而且不是pom.xml配置的问题。建议重建项目再试试。
以下解释有误:
我通过复制已有项目的web.xml、applicationContext.xml,创建了一个新的springmvc项目,但是配置controller的映射路径都不能正常访问。
我重新创建项目,手敲web.xml、applicationContext.xml,问题还在。
对比发现pom.xml有差异:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>springmvcdemo</artifactId>
<groupId>org.jlcc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.kuang</groupId>
<artifactId>springmvc-03-annotation</artifactId>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<build>
<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。 -->
<resources>
<!--这个元素描述了项目相关或测试相关的所有资源路径 -->
<resource>
<!--描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/java</directory>
<!--包含的模式列表,例如**/*.xml. -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<!--描述存放资源的目录,该路径相对POM路径 -->
<directory>src/main/resources</directory>
<!--包含的模式列表,例如**/*.xml. -->
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
新创建项目的pom.xml(IDEA自动生成)缺build字段:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>springmvcdemo</artifactId>
<groupId>org.jlcc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.kuang</groupId>
<artifactId>springmvc06ajax</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>
对比out目录中生成的class文件,发现没有配置 build->resources字段的代码没有生成class文件。
我查了下build->resources字段的作用:
- <resources>
资源往往不是代码,无需编译,而是一些properties或XML配置文件,构建过程中会往往会将资源文件从源路径复制到指定的目标路径。
因为新项目没有配置build,所以程序构建没有xml配置文件,程序就无法允许。
Maven build之pom.xml文件中的Build配置 - 程序员大本营
版权归原作者 梓沂 所有, 如有侵权,请联系我们删除。