精华内容
下载资源
问答
  • 这里是多模块项目的目录 该项目分为多个模块,其中admin模块依赖于common模块。我们目前只需要admin模块,使用打包admin模块时安装如下方式打包会报错,报错的大概意思是在maven仓库中不能下载common的jar包,...

    这里是多模块项目的目录

    该项目分为多个模块,其中admin模块依赖于common模块。我们目前只需要admin模块,使用打包admin模块时安装如下方式打包会报错,报错的大概意思是在maven仓库中不能下载common的jar包,原因是admin依赖common模块,在打包的时候如果本地仓库没有则会去远程仓库下载,远程仓库是没有common的包的。

    解决方法:

    先打包common模块按照上面的先clean 然后package打包,在install安装到本地的仓库中。

    最后打包admin的时候依赖就找到了。

    展开全文
  • maven打包时会将pom文件依赖的jar包一起打包,放到项目jar的lib文件夹中。打包时经常会遇到找不到依赖包的问题; 一、依赖远程jar包 1.到本地仓库检查下依赖包是否存在,如果存在;eclipse则可以右击项目->...

           maven打包时会将pom文件依赖的jar包一起打包,放到项目jar的lib文件夹中。打包时经常会遇到找不到依赖包的问题;

     一、依赖远程jar包

    1.到本地仓库检查下依赖包是否存在,如果存在;eclipse则可以右击项目->maven->update project(选择force update of snapshots/releases)重新加载下jar包,再次打包。

    2.如果本地仓库没有找到依赖包,则需要重新下载;

    二、多模块项目,依赖公共模块jar包

    1.springboot多模块项目,其中一些模块作为公共或基础模块,并不需要打包成可执行jar,所以pom文件中不需要引入maven打包插件:spring-boot-maven-plugin。

    2.打包时可以mvn -e install 查看详细的错误日志,检查是否报找不到父模块jar或者其他依赖模块jar,这种情况需要先将父模块打包。之后再依次按照依赖顺序打包即可。

     

     

    展开全文
  • 现如今,使用spring-boot和maven开发项目已经越来越普遍了,同时大多时候我们也是通过maven以及公共的repo和私服repo来管理自己的jar包依赖,但难免会碰到有些jar包需要放在本地,通过本地jar包的形式加载到自己的...

    现如今,使用spring-boot和maven开发项目已经越来越普遍了,同时大多时候我们也是通过maven以及公共的repo和私服repo来管理自己的jar包依赖,但难免会碰到有些jar包需要放在本地,通过本地jar包的形式加载到自己的项目里。

    本文主要阐述这种情况下怎么处理,项目中虽然使用的spring-boot,但是还是打包成了war包,项目结构如下

    project-A  //父工程
      module-a //启动类模块同时也是打包模块
      	module-a-pom.xml //packaging为war
      module-b //需要使用本地lib的模块
      	module-b-pom.xml
     pom.xml //packaging为pom
     lib //存放本地lib的目录

    为了能够在部署war包后项目能够正常运行,需要做下面几件事

    1. 如何在需要的模块中引用本地的包?

    这里也即如何在 module-b 中引用lib目录中的jar包,如下配置

    <dependency>
        <groupId>your.package.groupId</groupId>
        <artifactId>your.package.artifactId</artifactId>
        <version>your.package.artifactId</version>
        <scope>system</scope>
        <systemPath>${basedir}/../libs/your-package.jar</systemPath>
    </dependency>

    上述中,前三个和我们正常的maven配置一样,这需要注意的就是<systemPath>配置了,需要使用绝对路径,指向你的本地jar包路径${basedir}表示项目根目录,但是这里的根目录并不是我所想的父模块的目录(即project-A目录路径)而是该pom所在的模块的目录(即module-b目录)${basedir}代表的应该是本pom所在的模块对应的目录,所以我们需要使用 ../ 来找到对应的jar包。为了解决这个问题,自己google了下:

    how to get the super pom basedir in a child module pom?stackoverflow.com
    cb4cea5a869f44409f5da5db53c01e7a.png

    有几种方案,比如使用${project.parent.basedir}或者在父pom中定义<rootPath> ${basedir} </rootPath>然后在子pom中使用${rooPath}本人实践均无效。

    2. 如何将本地的jar包打包进项目的war包?

    按照1中配置完后编译没有问题,但是运行则报错,发现本地的lib并没有打包到war包中 WEB-INF/lib目录里,我们还需要在启动模块进行配置,这里即 module-a模块,如下配置:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
            <!-- 下面是为了将本地jar包打入WEB-INF/lib下而增加的配置-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <!-- 指向的是包含所有要用jar包的目录 -->
                            <directory>${basedir}/../libs</directory>
                            <!-- 编译后要把这些jar包复制到的位置 -->
                            <targetPath>WEB-INF/lib</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

    这里需要配置两个地方

    • spring-boot-maven-plugin插件配置<includeSystemScope>true</includeSystemScope>
    • 增加 maven-war-plugin插件,这里的<directory>也需要按照1中方法正确指向你的本地jar包所在的目录

    至此,便可以在spring-boot的war包中将本地的jar包打包进去从而顺利运行。

    展开全文
  • 首先我们需要考虑的是为什么要有maven多模块呢?maven项目为什么要构建多个模块而不是一个项目里创建多个包?今天遇到一个maven多模块项目,感觉很奇怪,为什么要创建多个模块呢?问了一些朋友说更具有层次,那在一...

    首先我们需要考虑的是为什么要有maven多模块呢?

    maven项目为什么要构建多个模块而不是一个项目里创建多个包?今天遇到一个maven多模块项目,感觉很奇怪,为什么要创建多个模块呢?问了一些朋友说更具有层次,那在一个项目中创建不同的包不是也很有层次吗,为什么不是创建多个包呢?创建多个模块的意义在哪里?

    假如一个项目中有user和role两大业务,而每个业务有分别都controller,dao,service包下有各自的类

    fcfa6af24117ae2a2e7b86501b8c5629.png

    这么看起来好像没什么问题。

    如果随着业务越来越多,又增加了财务,审批,订阅,任务等业务的话。那么代码会分成庞大。不容易找到那几个类直接有直接关联。

    早期团队三四个开发一个项目还好,后来走了一部分人,来了几个新手,新手的话,对代码逻辑不是特别清楚,所以要一一细看代码,简直可怕。

    真实开发场景中,一个项目一共三四十个包,假设三四十个包全部混合在一个项目下,每个包下至少三十个java类,对于新手而言熟悉代码需要比较长的时间,这就增加了一定的成本。

    那么如果我们把一个项目拆成2个小项目不是就解决这个问题了吗

    8889612c5ffbd82981de85a6b502f8cb.png

    mavenproject是父项目,而roleproject和userproject是子项目。那么让业务更加清晰,更加规范,非常有利于项目开发效率。

    maven多模块项目示例:

    1.创建一个maven父项目a

    7cdf4610857e0ca48a8c65f7b9962086.png

    b08d20fd1cc68f18a0dc8594a21c0fdb.png

    生成父工程,pom.xml如下

    4b5a44a0509d8e40475ab3486e3699d1.png

    删除工程中的src 目录

    17fb58da25e02f25f8c63bc429b6629e.png

    2.创建子模块b的maven项目

    右击父工程名a---》New---》Other ---》Maven Module

    05565f934d003c16819cea0ee5423959.png

    89a7695e52f0e5aeb33be541f89b9810.png

    设置子工程名以及父工程,再设置快速创建模式

    9069adb9e87bfbc0b85ddfb8830c7cef.png

    d90217afdc8111ef1d7a63efbd716481.png

    be910167fb3cd264aec942491a03c3c7.png

    得到子工程(b),设置编译的jdk

    4bfb0616dfb6e53a738ea40649ccb2d6.png

    5f0b07747906bd9077542fb761dc1c78.png

    同理创建b2子模块

    a33ed543a4f63bbd2f38880f6bbd5949.png

    af0f78802be997c1755d567e6376568d.png

    1b70eb571ca2e49879538295a5bb2eaf.png

    目录结构如下

    238a5cb9574aad53ebab5cb731ca4085.png

    同理,然后创建一个子模块c,但是c是pom性质的

    fddb32528c912c78f71f6f755e5389a7.png

    5ce4a1d690ce0263f155f0dab55070ff.png

    目录如下

    91b65fafa8f5edf9e017745f503844a5.png

    然后在子模块c里面创建孙子模块d

    右击c工程名---》New---》Other ---》Maven Module

    e61b13434efabb791b9f66914d4903e8.png

    4426db7d0754d3bf7eb05ba8112fc28d.png

    16aa3668b8724c34a3a76bd7d3268f68.png

    目录结构如下:

    abd57e123372b129424b50306e680738.png

    3c77623a9cf849b0548189c6047a5460.png

    下面我们配置模块依赖关系

    d85a43dd0f0ff83ac3914eb1fabd863b.png

    4fd677c0794217cea6907fec19ed9c7a.png

    2b624e0d88f439734b65d573aa361316.png

    1496050799bc9ee2c7a8a3c4489fc2b7.png

    7d34db44ed5408350297b33136e1ade3.png

    最后使用maven-update整个工程,右击父工程名--》Maven--》Update Project

    cc3fa9c6a9f924213ebbfa06a5d1e4de.png

    a513259a8f1a493b4b417a7560fc59ca.png

    打包和发布

      打包,右击父工程名 test-hd-parent---->Run As--->Maven Install

    50ba0b747077eea3d40523fc80627cf1.png

    d2be7ff0bfdb7bc6637760dd9897789e.png

    打包web子工程d,右击工程名d--->Run As ---> Maven Build...---> Goals: clean package--->Run

    8eca1e83a86f92ef58453386d4979e5c.png

    7d38c66896da7ac2bd0ad02be24f4eba.png

    1102e16b4bb88ea9492517351b1c3ade.png

    目录结构如下

    a7e7e7425b106f176c378bdb80262761.png

    9245fa3442ad5f55c6ccf85fcf7303b0.png

    c5035a49f4e09b85528f7c1eae34eddb.png

    示例2

    a是父项目,b1和b2是子项目,那么b2如何使用b1里面的函数呢,换一个说法就是b2如何把b1当一个jar包使用呢

    首先创建一个a项目

    f2c02479a7e687d09c0b02866378414a.png

    c97ddc74ca0548603de943acb8acfa96.png

    a7e302236c87cb6afde717372dbd0897.png

    然后删除src文件夹

    14135e65b0b869c8340108aba9809bbf.png

    然后在a下面创建b1项目

    4f076b6548248134a89ea4e049474b2e.png

    d6455ef5a25ff6c98e679bee981cf53e.png

    0608e9324f43f270bff0a501d8a56999.png

    1f57229289016e75d9335ce5da1a51de.png

    144e3eaf22624b381128a6d2d20378f1.png

    8a1d76d7bfe4d165996a244ceb7376a7.png

    使用同样的方法创建b2项目

    5c000b81dc09abb345559b2f3b9a5df1.png

    然后创建B1类

    951123d9488f56965f2d152adb94c497.png

    然后修改pom文件

    c162c7ee7017c23ee83d9141e2a52176.png

    然后创建B2类

    cfcc4d0f18d7ef129cdb8f4f96288eaa.png

    完毕

    示例3:Maven项目子模块如何引用父模块的jar包

    如果父pom中使用的是

    <dependencies>....</dependencies>

    的方式,则子pom会自动使用pom中的jar包

    如果父pom使用

    <dependencyManagement>

    <dependencies>....</dependencies>

    </dependencyManagement>

    方式,则子pom不会自动使用父pom中的jar包,这时如果子pom想使用的话,就要给出groupId和artifactId,无需给出version

    参考资料:

    谈谈maven多模块 https://yq.aliyun.com/articles/645217

    【Maven】使用Maven构建多模块项目 【Maven】使用Maven构建多模块项目 - H__D - 博客园

    Maven项目子模块如何引用父模块的jar包 https://blog.csdn.net/java_xxxx/article/details/81181674

    展开全文
  • 【67】一、Maven有哪些优点和缺点优点如下:简化了项目构建....有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。maven有很多插件,便于功能扩展,比如...
  • 打包单个模块: 在父模块上右键,Run As,Maven build… 然后在弹出的窗口上Goals中输入:clean package -pl [要打包模块名] -am 这种方式就能够将该模块所依赖的公共模块也进行打包,避免出现打包时报出缺少依赖...
  • 模块开发公共模块不要...打完公共模块的包记得发布到本地maven仓库 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifa...
  • 一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包。在进行war包部署时,发现dao是以jar包形式存在于...
  • Maven_多模块打包

    2019-11-29 10:55:20
    参考文章: https://blog.csdn.net/DamonREN/article/details/85091900 ... 如果是逐个模块打包,应注意依赖关系。最后生成的带-exec的jar包才是可以执行的。 ...
  • Maven构建多模块项目 创建父模块 1.先创建一个父maven项目,可以删除父模块的src文件夹下面的文件。当Parent模块创建好...Maven多模块打包注意 先打包父模块mvn clean——>mvn install如果有问题使用强制更新远
  • maven多模块打包

    2020-03-25 16:13:07
    1. 父模块打包模块打包时,子模块都是依赖即使打包的jar,所有模块的jar都是最新jar 2. 子模块打包模块直接打包,如果有依赖其他...方式二,把所有依赖的模块 install 到maven本地库中 3. 常用命令 默认使用po...
  • Maven项目多模块打包

    千次阅读 2016-11-07 11:55:09
    多模块工程的打包命令参考: -am --also-make 同时构建所列模块的依赖模块; -amd -also-make-dependents 同时构建依赖于所列模块的模块; -pl --projects 构建制定的模块,模块间用逗号分隔; -rf -resume-from 从...
  • 在日常开发中工作中大多数开发人员都是一个人奋战项目,虽然也使用maven管理,但是并没有充分发挥maven的功能,于是小编摸索着搭建一个maven多模块的项目,首先在网上关于这个的文章很多,虽然不是很好,但我从中...
  • maven多模块打包的pom文件,里面包含多个模块的pom文件,没有代码
  • Maven多模块工程打包指定模块工程执行如下命令: mvn clean package -pl 指定模块工程名 -am 参数说明: -am --also-make 同时构建所列模块的依赖模块;-amd -also-make-dependents 同时构建依赖于所列模块的...
  • eclipse 多模块Maven项目打包指定模块

    千次阅读 2018-08-07 17:37:28
    一直在各种测试打包多模块下面的单独模块打包,一直报找不到所依赖模块的jar包,网上各种寻找,没有找到合适的内容,今天偶然发现有个提示要parent模块运行打包,经测试确实打包成功,记录一下。  在eclipse中,多...
  • maven 多模块打包

    2020-09-09 06:48:14
    九月初,炎夏褪去,秋微凉。...言归正传,今天介绍一下 maven 多模块打包过程中蹚过的点,昨天耗费一整天的时间,就只玩了一个 `mvn -X clean install` 命令,说多了都是学艺不精交的时间学费,值得反思
  • SpringBoot 多模块maven配置 1 问题 现状:SpringBoot多模块项目中,创建项目会默认生成插件 <plugin> <!--该插件主要用途:构建可执行的JAR --> <groupId>org.springframework.boot</...
  • 作者 | ilaoke来源 | jianshu....假如一个maven项目下分为几个module,分别是不同的服务,以及common模块,结构如下:shopping├── common├── mail-service├── order-service└── pay-service则s...
  • 在用IDEA构建maven多module项目时,碰到了一些问题,现在归纳总结如下。假如一个maven项目下分为几个module,分别是不同的服务,以及common模块,结构如下:shopping├── common├── mail-service├── order-...
  • Maven多模块——打包指定模块

    千次阅读 2019-12-30 18:10:01
    假设Maven多模块项目如下: test-parent pom.xml: < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,186
精华内容 474
关键字:

maven打包多模块