学习maven时,尝试将javaee项目分成两个模块,总项目为server-side,其下面有两个子模块:web-lib和web-apps,其中web-lib只是保存所有的依赖的并没有任何的代码逻辑,web-apps才是真正的web项目。另外web-lib和web-apps均继承自server-side,web-apps依赖web-lib。其pom文件如下:
server-side pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>zwh.ssh.maven</groupId>
<artifactId>server-side</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>server-side Maven Webapp</name>
<url>http://maven.apache.org</url>
<build>
<finalName>server-side</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>web-lib</module>
<module>web-apps</module>
</modules>
</project>
web-lib pom.xml
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>zwh.ssh.maven</groupId>
<artifactId>server-side</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web-lib</artifactId>
<packaging>jar</packaging>
<name>web-lib Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- 这里定义了很多依赖,与前面的文章基本相同,这里就省略了 -->
</dependencies>
<build>
<finalName>web-lib</finalName>
</build>
</project>
web-apps pom.xml
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>zwh.ssh.maven</groupId>
<artifactId>server-side</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>web-apps</artifactId>
<packaging>war</packaging>
<name>web-apps Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>zwh.ssh.maven</groupId>
<artifactId>web-lib</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>web-apps</finalName>
<plugins>
<!-- jetty是一个servlet容器,类似于tomcat,配置该plugin之后,可以在项目中
调用mvn jetty:run-war直接运行这个web项目,默认端口是8080。plugin如果不添加version会报出WARNING -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
</plugin>
</plugins>
</build>
</project>
下面说一下今天遇到的问题,原来的项目是一个ssh项目,各种配置实用的xml文件,我今天想尝试实用annotation的方法配置,那么首先我就需要把hibernate-annotataions添加到项目中,前面也说了我的web-lib项目是用来保存所有的依赖的maven项目,所有就将该依赖添加到web-lib的pom项目下了,然后更改相关代码。然后运行我的web-apps项目,就出现错误了。报出找不到类的错误
Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity
然后整个一下午都在纠结这个问题,搜索了各种相关错误,各种百度谷歌,说是缺少一些jar包,但这些这些jar都在我项目里啊,可以通过eclipse看到这些依赖包的,怎么添加都报错,我将生成的web项目展开,发现hibernate-annotations及其的所有依赖包根据就没有添加在项目下,然后又各种头脑风暴,最后突然灵光一闪,我应该将整个项目install一下。然后就在server-sides上运行了mvn install方法,再次运行我的项目,终于不再出现错误了。
后来仔细想了想出错的原因,我的web-apps是依赖于web-lib的,然而maven依赖必须通过本地仓库或远程仓库才能找到依赖,我修改了web-lib项目的依赖但我的本地仓库仍是一样安装的web-lib项目,所以新添加的依赖会找不到。
经过一下午的折磨,得出一个教训,对于分模块的maven项目,修改了项目的依赖等操作时一定要将这个项目install一下
分享到:
相关推荐
maven项目搭建可能遇到的问题,挺实用的。
在压缩包中,包含eclipse安装maven所需的maven包和在maven使用过程中遇到的一些问题总结。
NULL 博文链接:https://crazybackkom.iteye.com/blog/970527
更新Maven项目遇到了问题 无法计算建设计划:插件org。Apache Maven。插件:有资源插件 更新Maven配置错误,提供解决错误的资源
maven经常遇到下载jar包,下载不下来。或者很慢的情况。那是因为下载jar的源是国外源,所以很慢。这个源为开源中国的源。下载速度很快。
maven项目创建时相关问题,参照网络资源以及自己遇到问题解决
maven的settings.xml配置,提供maven包下载位置,刚刚maven仓库镜像仓库下载。 <localRepository>D:/develop/apache-maven-3.6.0/repository <id>alimaven <name>aliyun maven <url>...
搭建maven工程中遇到的问题,适合新手参考,少走弯路。谢谢。
本文面向具有eclipse相关开发经验的技术人员,一步步说明如果在eclipse中集成Maven进行开发。本教程是入门级教程,由于本站发表文章实在不便,故将word文档直接上传了。 目录 Eclipse整合Maven开发教程 1 1. ...
针对对初学者使用maven的遇到的问题的一些讲解 和学习的总结
一些使用中遇到的Maven常见问题解答
maven编译pentaho-big-data-plugin遇到的所有问题解决,pentaho6.0
idea 2021.03 maven 3.8.5 遇到下边问题 换成3.6.3 版本 解决 1) Error injecting constructor, java.lang.NoSuchMethodError: org.apache.maven.model.validation.DefaultModelValidator: method 'void ()' not ...
本文是研究Maven压缩打包技术中的第一部分,主要介绍了如何开发Maven插件,参与maven build的打包过程。 并附上了学习过程中应注意的细节,以及遇到的问题及解决方法。
使用maven管理依赖包时会遇到依赖冲突的问题,解决起来非常麻烦。MavenRunHelper插件作为解决冲突的利器,能够高效率的展示出冲突列表,快速解决冲突问题。由于网络等问题,常常无法下载插件。现提供IntelliI IDEA ...
● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的。 ● 能够自定义包含/排除...
文档总结了搭建maven私服管理器nexus时遇到的一些问题,建议各位使用nexus2.*版本; 文档描述了pom以及setting的一些配置
下载 Maven, 并解压到某个目录...如果遇到以下异常,重新编辑bash_profile文件,增加export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home后,并重新运行$ source ~/.bash_profile即可。
maven 在 eclipse中的配置 新手搭建maven工程,遇到maven配置问题,搭配完自己总结的
需要一个包时通过 add dependancy.把它加进来以后Maven 就会在你在eclipse里指定的哪个Local Repository Folder 目录下找这个jar包。比如我设的目录是C:\Documents and Settings\er\.m2\repository ,如果找到,就...