A. Maven模块化开发,spring无法注入其它模块中的接口
1、使用Maven构建模块化项目,分为web,service,模块,web依赖service,service依赖模块
2、在web模块中可以引用service模块的中接口或者类,但是无法注入(可以确定:spring的配置文件扫描包路径是没有问题的)。
3、
B. 北大青鸟设计培训:Maven多模块项目构建
在日常开发中经常会遇见多模块项目的构建,很多初学者者这个概念的项目构建比较模糊。
那么接下来沈阳电脑培训http://www.kmbdqn.cn/一起构建多模块的项目。
在创建的多模块的项目时候,我们要明确一个点,创建多模块的项目每一个项目都一个父类模块去管理多个子模块的项目。
第一步:创建一个parent模块【新建一个maven项目】第二步:创建子模块【更具需要的类型选择】第三步:创建成功过后如果有多个模块依次安装上述的步骤继续创建更多的模块即可当多模块项目构建成功后,我们可以父模块中的pom.xml查看到依赖的关系
C. maven写web项目时,多模块怎么用呀
你的service作为一个模块以后就相当于外部依赖,controller可以引用啊。service本来就是一个bean,你可以当作正常引用service的方法,这个方法可以通过注解引用或者配置里面的<bean>来引用
D. 如何使用eclipse创建Maven工程及其子模块
1,首先创建一个父类工程 子模块继承父类工程 并在父类工程的pom.xml文件中定义引入的jar及其版本号 子模块可以引用
2 创建api子模块,主要放置SDK
3 创建server 子模块 主要存放配置文件 不包括源代码
创建工程完成
创建支持eclipse的多模块maven项目
通过maven可以创建多个关联模块的项目(Multiple Mole Projects)。由一个总的模块,下面包含多个子模块(子模块还可以包含子模块)。这种maven功能能支持大型的项目构建,往往大型项目由很多子模块组成。
以下说明在eclipse下如何创建多模块的maven项目。
创建总的POM
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=multi-moles-demo
创建一个maven项目,然后修改该项目的pom.xml文件,package类型改为pom:
<packaging>pom</packaging>
并且删除src目录。
创建子模块
在总模块目录下,创建子模块,比如web-demo:
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=web-demo
再创建一个比如日志模块:
mvn archetype:create -DgroupId=com.easymorse.marshal -DartifactId=logging-demo
在总pom的pom.xml文件中已经自动加入:
<moles>
<mole>web-demo</mole>
<mole>logging-demo</mole>
</moles>
在各子模块的pom.xml文件中也自动加入了:
<parent>
<artifactId>multi-moles-demo</artifactId>
<groupId>com.easymorse.marshal</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
子模块继承了总POM的package,这里需要修改,web-demo模块覆盖为:
<packaging>war</packaging>
logging-demo模块修改为
<packaging>jar</packaging>
对上级模块的特别设置
需要在上级模块中设置java编译的参数,现在eclipse一般都使用比较新的版本,默认jdk是1.6,而maven默认还是1.4。
E. Maven多模块开发,各模块之间是怎么调用的
Maven多模块开发,各模块之间是怎么调用的
你可以交给Spring
在配置文件哪里
把需要的模块通过注入的方式
F. maven多模块项目可以不在一个目录吗
可以。
多模块项目由管理一组子模块的聚合器 POM 构建。在大多数情况下,聚合器位于项目的根目录中,并且必须具有 pom类型的打包。
子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。
通过聚合器 POM 构建项目,每个具有与pom不同的打包类型的项目都会生成一个构建的存档文件。
G. 多模块下的ConfigurationProperties
IDEA一直是我们比较中意的开发工具,因为在开发过程中它能做到许多智能提示,这大大提高了我们的生产效率。
因此,如果我们想要在springboot的配置文件中自定义配置,并且能够关联到实体类并且能给出提示的话,除了必须的 @ConfigurationProperties 注解之外,我们还需要 spring-boot-configuration-processor maven依赖。
在单个项目中,通常我们依赖了这两项,我们就能实现上述功能。然而,在多模块中,我发现尽管依赖了上述,IDAE仍然提示我 spring boot configuration annotation processor not configured 。
作为强迫症晚期,我当然不能接受如此显眼的大红色报错,但是不管是springboot的官方文档还是stackoverflow,给出的解决办法仍然是这两种,我一度移动了依赖的位置去尝试,但这仍然无功而返。
直到我在google中发现了这篇文章
spring-boot-configuration-processor不适用于maven子模块项目
文中给出了另外一种解决办法,就是添加plugin
终于,在添加以上的配置项目,重新编译后,我的子模块target下面自动生成了元数据,这次是可以点击进去了,问题由此迎刃而解。
H. Java Maven打包总结(Jenkins多模块编译部署)
原文地址: Java Maven打包总结(Jenkins多模块编译部署)
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
可以看到主要区别在把生成的jar包最终存放的位置, package只管打包; install把打好的包放到了本地maven仓库;deploy是同时放到本地仓库和远程maven私服
这里本地仓库默认是 /root/.m2/repository/ ,具体配置在 ${M2_HOME}/conf/settings 的 localRepository 配置项决定。远程私服仓库一般是nexus,具体地址在项目的pom.xml中配置。比如
一般是进入父级目录之后执行
如果是多级目录的话,有时候并不一定是按照 具体的项目来 编译,比如
这个时候如果一个项目一个项目来编译会超级多,很繁琐,这里是按照 subparentproject 来编译,命令如下
有个注意的地方:
subparentproject 目录下的pom.xml文件中一定有类型如下的配置
1、需要安装插件 Extended Choice Parameter Plug-In 可以支持参数单选、多选
2、项目选择"自由风格",而不是maven编译
3、在“构建” -> "执行shell" 中编写 子模块编译脚本及其后续处理
具体配置如下图
“构建” -> "执行shell" 中的处理脚本
附加:
Linux Bash下字符串操作总结
I. 我的一个关于java的maven多模块项目,数据库我们统一用的一个服务器,现在好像老师把那个服务器
自己装一个数据库,把SQL文件在自己装的数据库里执行一遍,然后修改项目的jdbc连接配置,连到自己装的数据库上。
J. 如何在Maven中配置Spring依赖
1.1 spring-security-core
Spring Security的核心功能是由spring-security-core包提供的,包含了认证和访问控制功能、支持standalone应用程序、方法级安全和JDBC支持。
3.2.3.RELEASE
4.0.4.RELEASE
org.springframework.security
spring-security-core
${org.springframework.security.version}
注意:我们使用的是3.2.x版本的Spring Security--Spring和Spring Security有着不同的版本计划,所以他们的版本号之间没有一对一关系。
如果项目使用的是较老版本的Spring,需要注意的时Spring Security 3.1.x版本不依赖于Spring 3.1.x版本,因为Spring Security 3.1.x版本在Spring 3.1之前发布。Spring的计划是在后续的版本中,使双方的版本号更为接近,更多细节请查看这个JIRA。我们将在后面的内容中看看这种情况对我们的实际影响。
1.2 spring-security-web
要为Spring Security增加Web支持,需要引入spring-security-web依赖:
org.springframework.security
spring-security-web
${org.springframework.security.version}
这个项目为Servlet环境引入了针对URL访问控制的相关基础安全组件和过滤器。
1.3 Spring Security与较老版本的Spring Core之间的依赖问题
如上文所述,这个新的依赖产生一个Maven依赖关系问题,Spring Security的相关jar不依赖于最新的Spring core的jar (而是以前的版本)。这可能使的被依赖的Spring core相关包在类路径中被配置前在最新的Spring 4.x相关包的前面。
这是如何发生的呢?我们需要了解Maven处理版本冲突的机制,Maven会选择与依赖树树根最接近的版本。在之前的情况中,spring-orm依赖4.x版本的spring-core,而spring-security-core依赖于3.2.8版本的spring-core。因此,spring-orm和sprint-security-web的定义顺序就是一个问题,先定义的会有更高的优先级。最终情况就是,我们的类路径中会有两个版本的spring-core。
为了避免这类问题,我们需要在我们的pom文件中明确指定一些Spring依赖,而不依靠Maven隐式依赖机制。我们将在pom的根文件中定义特定的依赖关系,这样这些依赖关系将会有更高的优先级。下面例子中,将对所有的Spring核心组件明确定义相同的版本,对于多模块项目,需要在父配置文件的dependencyManagement属性中定义。
org.springframework
spring-core
${org.springframework.version}
org.springframework
spring-context
${org.springframework.version}
org.springframework
spring-jdbc
${org.springframework.version}
org.springframework
spring-beans
${org.springframework.version}
org.springframework
spring-aop
${org.springframework.version}
org.springframework
spring-tx
${org.springframework.version}
org.springframework
spring-expression
${org.springframework.version}
org.springframework
spring-web
${org.springframework.version}
1.4 spring-security-config及其他
要使用丰富的Spring Security XML的命名空间,需要定义spring-security-config依赖:
org.springframework.security
spring-security-config
${org.springframework.security.version}
runtime
没有任何代码需要在编译时依赖这个包,所以它的范围应该定义为runtime。
最后,LDAP、ACL、CAS和OpenID支持需要分别增加各自的依赖包:spring-security-ldap, spring-security-acl, spring-security-cas和spring-security-openid。