maven 父子项目及其子项目相互依赖说明和配置
1.项目结构如图
2.demo和demos是demoTest的子项目,其中,demo项目,会依赖demos项目中的一个对象。注:一般来说,被依赖的项目,不会被发布,其应该单纯的作为一个被引用的包,但是该例子中,两个子项目其实都可以被发布,我们pom里面需要设置一下classifier为exel,不然会报错,这个参数已经在下面的pom中配置。
3.先创建demo和demos,再建一个文件夹demoTest,将他们放进去,然后在demoTest里面建一个pom.xml就好了,demoTest的pom如下。
<?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"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>demoTest</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 父级项目这里需要将其改为pom--> <packaging>pom</packaging> <modules> <!-- 这里添加所有子项目--> <module>demo</module> <module>demos</module> </modules> <name>demoTest</name> <description>Demo project for Spring Boot</description> <parent> <!-- 该项目依赖的父级项目--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.4</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- 父级项目暂时不放包--> <!-- <dependency>--> <!-- <groupId>org.springframework.boot</groupId>--> <!-- <artifactId>spring-boot-starter-web</artifactId>--> <!-- </dependency>--> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
4.demo想引用demos,需要
*将demos利用maven命令install到maven库
*在demo的pom.xml中添加demos的包名
*可能还需如图所示配置demo的model,添加demos的包(个人感觉,配置好demo的pom应该就会自动引用了吧)
5.demo和demos的pom如下:
<?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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.example</groupId> <artifactId>demoTest</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> 父级项pom.xml的相对路径,一定要写,其不存在于公共库,不写路径,maven找不到的。 </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <!--引用demos项目,引用如果冒红 1:则试试先将demos项目install一下到--> <dependency> <groupId>com.example</groupId> <artifactId>demos</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 配置的 classifier 表示可执行 jar 的名字,配置了这个之后,会打出2个jar,一个是可以被其他项目引用的,一个是可执行的,可执行的名字比较长--> <classifier>exel</classifier> </configuration> </plugin> </plugins> </build> </project>
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.example</groupId> <artifactId>demoTest</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> 父级项pom.xml的相对路径,一定要写,其不存在于公共库,不写路径,maven找不到的。 </parent> <groupId>com.example</groupId> <artifactId>demos</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demos</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 配置的 classifier 表示可执行 jar 的名字,配置了这个之后,会打出2个jar,一个是可以被其他项目引用的,一个是可执行的,可执行的名字比较长--> <classifier>exel</classifier> </configuration> </plugin> </plugins> </build> </project>
发布者:songJian 点击数:1151 发布时间:2022-03-15 02:57:56 更新时间:2022-03-15 04:16:10
正在加载评论...