哪里有做美食的视频网站,百度网站关键词和网址,企业宣传视频制作免费版,分销网站没加载出来就reimport#xff0c;这个时候clean和install没用#xff0c;那是编译安装项目的。 reimport干了什么#xff1f;
结合idea的maven教程
父子模块
子模块不需要groupId ruoyi中父模块还添加了子模块的依赖#xff0c;#xff0c;#xff0c;
先安装父再是子…没加载出来就reimport这个时候clean和install没用那是编译安装项目的。 reimport干了什么
结合idea的maven教程
父子模块
子模块不需要groupId ruoyi中父模块还添加了子模块的依赖
先安装父再是子dubbo官网案例 为了成功编译服务端、消费端模块需要先在本地打包安装 dubbo-samples-spring-boot-interface 模块。
./mvnw clean install -pl 1-basic/dubbo-samples-spring-boot
./mvnw clean install -pl 1-basic/dubbo-samples-spring-boot/dubbo-samples-spring-boot-interfaceMaven多模块开发
曾经我们在一个应用一个war or jar中划分出包(层是以包的层次结构划分的)。随着项目体积的逐渐增大项目结构逐渐横向扩张变得臃肿短粗
单个java文件逐渐变得很长同一包下的文件变得很多但项目结构已定改变结构很费功夫pom.xml中的依赖列表也越来越长到后来你根本就不清楚哪个依赖是谁需要的渐渐的很多不必要的依赖被引入。甚至出现了一个依赖有多个版本存在。这个应用可能需要有一个前台和一个后台管理端你发现大部分dao一些service和大部分util在其他应用中可以用 如果其他项目不能引用这些代码则不得不重写一遍 build整个项目的时间越来越长尽管你只是一直在web层工作但你不得不build整个项目。某个模块比如util你只想让一些经验丰富的人来维护可是现在这种情况每个开发者都能修改这导致关键模块的代码质量不能达到你的要求。你不得不新建一个项目依赖这个WAR这变得非常的恶心因为在Maven中配置对WAR的依赖远不如依赖JAR那样简单明了而且你根本不需要org.myorg.app.web。 项目发展到如此庞大的水平老一套结构已经不符合高内聚、低耦合的标准了。为了给项目“减肥”同时进一步粒化拆分模块我们需要“增高”即经典的“加一层”思想。现在是以包的形式分层再加一层就是应用之间能够互相引用或者说依赖也就是jar包级别之间的依赖。同时由于传统的jar包引入方式不利于维护pom.xml文件太长也需要拆分我们使用maven进行分模块开发顺便还解决了编写部分代买需要编译全部项目的问题。 一个简单的Maven模块结构是这样的
---- app-parent|-- pom.xml (pom)||-- app-util| |-- pom.xml (jar)||-- app-dao| |-- pom.xml (jar)||-- app-service| |-- pom.xml (jar)||-- app-web|-- pom.xml (war) 较好的描述 配置文件随意会在作用域内按优先级生效。我猜是就近原则 变量的就近原则和编译原理有关系吗是在内存中顺序寻找最近的么但内存是可以随即存取的把。 springboot多模块简单来说就是把按包分模块的模式借助maven升级到jar的方式抽象性更加强了假如jar再升级到到war或者多个集合jar就成微服务了在多模块jar模式下可以将某个jar拿出来对外共用能大大提高代码复用率与开发效率。 https://zhuanlan.zhihu.com/p/345682526 父模块
创建时选择 maven pom 不以springboot为父项目的子模块需要加入这个依赖 !-- SpringBoot的依赖配置--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.5.9/versiontypepom/typescopeimport/scope/dependency声明包含的子模块并把自己打包成pom modulesmoduleruoyi-admin/modulemoduleruoyi-framework/modulemoduleruoyi-system/modulemoduleruoyi-quartz/modulemoduleruoyi-generator/modulemoduleruoyi-common/module/modulespackagingpom/packaging属性
定义属性如版本号等可以自定义标签。 propertiesruoyi.version4.7.2/ruoyi.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.versionmaven-jar-plugin.version3.1.1/maven-jar-plugin.version!-- 等等等等 --/properties在后面用${}取出来用。在子模块中也可以使用父模块的属性。
plugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.1.1.RELEASE/versionconfigurationforktrue/fork !-- 如果没有该配置devtools不会生效 --/configurationexecutionsexecutiongoalsgoalrepackage/goal/goals/execution/executions/plugin子模块
创建时选择 maven project 一个通用模块其他模块需要的时候在pom.xml中依赖他就行实体类、注解、配置类、异常、util等都在这里 注父模块中导入的依赖子模块的pom.xml中依然需要编写配置但可以省略父模块中已经声明的版本号。 可以省略的默认导入的是通过dependendcy标签依赖的模块中的依赖。 如果想要排除部门这些默认导入的模块要指定exclusive 模块版本modelVersion和父工程版本不一样4.0.0和4.7.2
若依里通用的在common里主要业务在framework里。admin就光controller层其他模块依赖common模块common没有依赖其他不然会循环依赖。admin不需要指明依赖common因为依赖了依赖common的许多模块。父工程下的大哥
插件
maven 打包问题repackage failed: Unable to find main class
问题背景今天用spring boot做了一个公共模块需要打成jar包让其他项目引用但打包的时却提示缺少主类但是我这一个公共模块本来就没写主类。
错误信息repackage failed: Unable to find main class
问题原因为使用spring boot项目用的maven插件为pluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion2.2.9.RELEASE/version/plugin
/plugins
用此插件打包时候会默认寻找签名是public static void main(String[] args)的方法没有所以报错 可以修改配置解决此问题。配置如下
buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationskiptrue/skip/configuration/plugin/plugins/build
或者直接修改maven插件改用apache的maven插件配置如下 plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactId
/plugin ruiyi-cloud顶级父模块为什么要两个插件都用 虽然把boot的部分排除Repackage了 buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdconfigurationsource${java.version}/sourcetarget${java.version}/targetencoding${project.build.sourceEncoding}/encoding/configuration/plugin/pluginspluginManagementpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionexecutionsexecutiongoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/pluginManagement/build spring-boot-maven-plugin
引入springboot的方式
parent dependiences 需要注意的是,之所以引入各starter、相关依赖的时候都不写版本因为都有统一的父模块来管理版本 无论是以springboot-parent为父模块还是以包含的springboot-dependience的模块为父模块在maven种想省略版本号都是子项目
https://blog.csdn.net/changerzhuo_319/article/details/99710393 https://blog.csdn.net/changerzhuo_319/article/details/99710872