首先 创建一个mvn项目, 直接在命令行执行, 原型生成:
mvn archetype:generate
选一个maven quick start的template, 然后删除src和target文件夹
在pom.xml里面version 下面加上pom (maven 的三种打包方式: pom为打包依赖方式, jar文件,或者 war文件)
在此目录中再次执行mvn archetype服务器托管网:generate, 构件artifactId选为child1, 完成后自动在mvnparent目录的Pom中添加了 节点
再次在mvnparent目录执行mvn archetype:generate 生成child2项目, 会在mvnparent的pom.xml中添加child2的module, 把里面没用的build 节点都删掉
<?xml version="1.0" encoding="UTF-8"?>
"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">
4.0.0
mvnparent
org.caloch
1.0-SNAPSHOT
child2
jar
child2
http://www.example.com
UTF-8
1.7
1.7
mvnchild1引用了child2项目的pom.xml, 里面删除groupid和version两个,它们会继承parent, packaging改为jar
<?xml version="1.0" encoding="UTF-8"?>
"http://maven.apache.org/POM/4.0.0"
xmln服务器托管网s: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">
4.0.0
mvnparent
org.caloch
1.0-SNAPSHOT
mvnchild1
jar
mvnchild1
http://www.example.com
UTF-8
1.7
1.7
junit
junit
4.11
test
org.caloch
child2
${project.version}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
"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">
4.0.0
org.caloch
mvnparent
1.0-SNAPSHOT
pom
mvnparent
http://www.example.com
UTF-8
1.7
1.7
junit
junit
4.11
test
mvnchild1
child2
将项目导入idea中可以调试, 运行为 java -cp “加上另外项目的class文件路径”
D:sourcereposmvn_multi_modulemvnparentmvnchild1> java -cp "D:sourcereposmvn_multi_modulemvnparentmvnchild1targetclasses;D:sourcereposmvn_multi_modulemvnparentchild2targetclasses;" child1.App
mvn compile
mvn package
需要指定main class
指定时 java -jar xx.jar可以执行
不指定main class时, 使用java -cp xx.jar {maiclass} 来执行
构建, 在child1的pom里面添加build
build>
plugins>
plugin>
artifactId>maven-assembly-pluginartifactId>
configuration>
<!-- <!–这里要替换成jar包main方法所在类 –>-->
<!-- <!–上面指定类的路径–>-->
descriptorRefs>
descriptorRef>jar-with-dependenciesdescriptorRef>
descriptorRefs>
configuration>
executions>
execution>
id>make-assemblyid>
phase>packagephase>
goals>
goal>singlegoal>
goals>
execution>
executions>
plugin>
plugins>
build>
运行,注意要运行和dependency一起打包的jar才可以不需要额外添加另外一个包的class path, 否则还是要加class path -cp选项:
cd D:sourcereposmvn_multi_modulemvnparentmvnchild1target java -cp .mvnchild1-1.0-SNAPSHOT-jar-with-dependencies.jar child1.App Hello util in child2
关于引用两个jar,里面的包名和类名都相同的问题: 按搜索,只需要改变引用的顺序就会造成后一个覆盖前一个的结果
建好的项目文件在:
https://files.cnblogs.com/files/hualiu0/mvnparent.7z?t=1698752418&download=true
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 把VS Code打造成后端开发的宇宙IDE,也挺爽
本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注! 作者:维生素P|慕课网优质作者 工欲善其事必先利其器,提高程序员的开发效率必须要有一个好的开发工具。而一旦提到开发工具,那么就绝对会提到火爆到被称为宇宙IDE的VS Code。 VS C…