1. The container 'Maven Dependencies' references non existing library
解决方法,将eclipse中maven插件中“resolve dependencies from workspace projects”的选项取消
默认的本地库更改,修改maven_home\conf\settings.xml中localRepository的配置
[ERROR] The goal you specified requires a project to execute but there is no POM in this directory (...). Please verify you invoked Maven from the correct directory.
到有pom.xml文件的目录下执行命令
2. myeclipse从svn导入maven项目,有modules。
myeclipse的check out maven projects from scm,没有试成功怎么导出。但可以先从svn检查maven项目,包含子module,然后再导入exists maven projects。
3. Failure to find xxx:jar:1.0 in ... was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates are forced
这是一些jar包在之前的仓库无法获得,在更改仓库后,或把jar包部署到了私服上后,仍然出错。这时把.m2 文件夹下对应的 xxx.lastUpdated文件再更新依赖,就可以了。或者使用mvn命令时加 -U参数,忽略xxx.lastUpdated。
另外以上方式仍然报错,这时可能是maven 库或私服里确实没有对应的jar包,这时可以在私服里增加仓库,或者更改仓库。
4. pom聚合的install,在maven 的build config里,goals选项里填入install,profiles中填入maven聚合项目中配置的modules profile的id,如果是如下配置:
<profiles>
<profile>
<id>modules</id>
<modules>
<module>modules/parent</module>
<module>modules/common</module>
<module>modules/entity</module>
<module>modules/ejb</module>
<module>modules/spring</module>
<module>modules/hibernate</module>
<module>modules/web</module>
<module>modules/test</module>
</modules>
</profile>
</profiles>
则这里就要填入modules
5. maven install的plugin找不到,比如effective pom 中配的是2.3.1,本机上已经有2.2.1了,是不会使用的。就会去maven仓库中下载新版本,maven 的中央库连接经常不稳定。一般会在settings.xml中配置一些镜像。但maven不会依次去尝试所有镜像,而当排在前面的镜像失效、或不能提供最新版本时,就需要调整镜像的位置。
6. 导入的maven项目找不到jdk中的类
jdk版本是1.6,ide是ide出问题了,将Myeclipse重启ide,对有依赖的maven项目进行更新maven依赖、更新maven项目配置操作,然后对本项目clean、 重新build后就可以了。
7. 拷贝依赖包 mvn dependency:copy-dependencies,默认会拷到项目的 target\dependency 目录,想要复制到自定义的目录比如target/libs目录下,需要在pom.xml文件中添加设置覆盖默认设置:
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>true</stripVersion>
</configuration>
</plugin>
其中${project.build.directory}是maven变量,表示target目录。如果不写的话,将在根目录下创建lib目录。
excludeTransitive,表示是否不包含间接依赖的包;
stripVersion表示复制的jar文件去掉版本信息。
如果需要在其他过程,比如package中加入copy-dependencies,需要在该plugin标签中这样设置:
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>libs</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
8. 导入jar包到本地库
有时候有些第三方就是从仓库中下载不下来,配的私服也有问题,就只有手动导入jar包了。Myeclipse 10 可以使用“Myeclipse -- utilities -- Maven4MyEclipse -- import jar to local repository”工具,导入jar包到本地库。eclipse的m2eclipse插件暂时没找到这样的工具。使用maven命令的可以这样:
mvn install:install-file
-DgroupId=com.danga
-DartifactId=memcached
-Dversion=2.0.1
-Dfile=java_memcached-release_2.0.1.jar (或者/d:/java_memcached-release_2.0.1.jar)
-Dpackaging=jar -DgeneratePom=true
This will add the memcache jar into your local Maven2 repository under groupId com.danga and artifactId memcached, you can then edit your pom.xml adding this dependency.
However, the maven eclipse can not recognize it since it always search from public repository .
安装到私服
mvn deploy:deploy-file -DgroupId=org.apache.hadoop -DartifactId=hbase -Dversion=1.0 -Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]
批量导入jar
直接拷贝文件至/opt/data/nexus/sonatype-work/nexus/storage/pvinsight/org/apache/hadoop/hive/hive-exec/0.5.0
或者
通过脚本执行 mvn deploy:deploy-file
9. 使用maven发布时,报某个类找不到,原因是某个运行时的类,import了用于测试的类(但并未使用),比如junit相关的类。这样,在ide中和maven compile时都不会报错,在打包时,由于junit这样的jar的scope是test类型,因此就不会包含进来,于是就出错了。解决方法就是删除不不要的引用。
10. 使用mvn compile命令,出现
错误: 编码GBK的不可映射字符
不能编译。这是因为代码或注释中存在中文引起的,一般在ide中会自动处理编译时的字符集,就不会碰到这个错误。这个错误是在生成代码后,其中自动加上了中文注释,手动删除中文注释处理这个问题太麻烦。这个错误是在命令行执行编译命令才出现的,需要设置编译的字符集,设置方式是:
maven编译文件的编码设置如下:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<encoding>UTF-8</encoding>,如果不设置的话会用本地操作系统的编码来编译文件。
资源文件的编码设置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
设置好maven-compiler-plugin编码再运行mvn compile就没有这个错误了。
11. maven打包时,SNAPSHOT类型的依赖包,会加上时间戳,像下面这样
xxx-1.3.0-20121225.012733.jar
如果不想用时间戳,始终使用SNAPSHOT,xxx-1.3.0-SNAPSHOT.jar这样的,需要使用<useUniqueVersions>false</useUniqueVersions>配置。在assemble插件里有描述:http://maven.apache.org/shared/maven-archiver/examples/classpath.html。而有完整例子的在这个日文网站http://kenichiro22.hatenablog.com/entry/20110908/1315481232
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.xxx.Main</mainClass>
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
这样打包后jar文件中的MANIFEST.MF文件中的依赖描述就是用SNAPSHOT而不是用时间戳了。
12. 打包时包含svn版本信息(参考http://my.oschina.net/bayuanqian/blog/110298?p=1),配置如下:
<plugin>
<groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
<artifactId>svn-revision-number-maven-plugin</artifactId>
<version>1.13</version>
<configuration>
<verbose>true</verbose>
<entries>
<entry>
<prefix>prefix</prefix><!--自定义前缀名,与properties文件保持一致即可-->
<depth>empty</depth>
</entry>
</entries>
</configuration>
<executions>
<execution>
<phase>validate</phase><!--需定义package之前的生命周期-->
<goals>
<goal>revision</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.tmatesoft.svnkit</groupId><!--svn1.7之后才需要配置-->
<artifactId>svnkit</artifactId>
<version>1.8.10</version>
</dependency>
</dependencies>
</plugin>
外层还需要配置
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering><!--此项为true才会替换properties文件中的占位符-->
</resource>
</resources>
然后配置文件中可以使用如下占位符
repository = ${prefix.repository}
path = ${prefix.path}
revision = ${prefix.revision}
mixedRevisions = ${prefix.mixedRevisions}
committedRevision = ${prefix.committedRevision}
status = ${prefix.status}
specialStatus = ${prefix.specialStatus}
上面revision是svn库最新的版本号,committedRevision是当前项目的最后提交版本号。因此使用committedRevision代表当前项目的最新版本号。
相关推荐
3. **依赖管理**: Maven通过POM自动管理项目的依赖关系,可以避免jar地狱问题,减少手动配置。 4. **生命周期 (LifeCycle)**: Maven有三个主要的生命周期,分别是clean、default和site。default生命周期包含编译、...
在使用Maven进行Java开发的过程中,常常会遇到一些常见的问题,以下是对这些问题的详细解答: 1. **导入web类型的Maven项目到Eclipse无法正确识别**:这通常是因为Eclipse缺少对Maven项目的理解。解决方案是在项目...
maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...
在Eclipse中安装Maven插件,可以方便开发者在IDE内进行Maven项目的操作,解决无法用Maven Pom editor打开pom.xml文件的问题。以下是对这个主题的详细说明: 1. **Maven Pom Editor**: Maven的pom.xml文件是项目...
本文将根据“maven从配置到一些坑的总结”这一主题,深入探讨Maven的使用过程中的关键知识点,以期帮助开发者避开这些潜在的问题。 【描述】:“maven从配置到一些坑的总结对接下来的使用maven有好处” 正确配置和...
Maven 3.2.5是该工具的一个版本,发布于2014年,旨在提高构建效率,增强稳定性,并修复了前一版本的一些已知问题。 在Java开发中,Maven通过使用一个统一的构建生命周期和约定优于配置的原则,极大地简化了项目构建...
Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...
文件列表中的"新建文件夹 (2)"可能包含了一些具体的Maven项目或者依赖库,这些文件可以帮助开发者快速启动基于Spring 4.0.5和MyBatis的项目,避免了手动下载和添加依赖的步骤。 总的来说,Maven的使用极大地提高了...
Maven版本下载指南 Maven是一款基于Java的项目管理和构建工具,由 Apache Software Foundation 开发和维护。Maven的主要功能是帮助开发者快速构建、测试和部署项目。在实际项目开发中,Maven发挥着至关重要的作用。...
Maven 3.8.8是Maven的一个版本,它包含了对之前版本的一些改进和优化,提供了更稳定和高效的服务。 ### 一、Maven 3.8.8下载 首先,你需要从Apache Maven的官方网站(https://maven.apache.org/download.cgi)下载...
这对于国内开发者来说,可以显著减少因网络问题导致的依赖下载延迟。 此外,`settings.xml`还可以用于配置用户的个人信息、服务器认证、以及本地仓库路径等。对于大型团队,可能还需要管理多个Maven项目,这时可以...
此外,它还修复了一些已知的bug,确保了更好的兼容性和可靠性。 安装Maven 3.6.0的过程相对简单。首先,你需要下载`apache-maven-3.6.0`压缩包。这个压缩包包含了Maven运行所需的所有文件,包括bin目录下的可执行...
使用Maven导入Maven工程的视频教程 仅供学习交流! 后续会持续分享相关资源,记得关注哦! 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入...
Maven之所以被广泛应用,是因为它解决了传统Java项目开发中遇到的依赖管理问题。在没有Maven之前,开发者需要将所有依赖的jar包手动下载并添加到项目的lib目录中,这不仅繁琐,而且容易出错,例如版本冲突和依赖遗漏...
当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个...
使用Maven,开发者只需在POM.xml中声明项目依赖,Maven会自动下载并管理这些依赖,避免了版本冲突问题。此外,Maven通过约定优于配置的原则,简化了项目结构,使得构建过程标准化。 总结来说,Maven 3.5.4是一个...
在IntelliJ IDEA中使用Maven Filter功能时,开发者可能会遇到一些挑战,这些挑战主要涉及到配置、资源过滤以及与项目构建的交互。首先,我们来深入理解Maven Filter及其在IntelliJ IDEA中的应用。 Maven Filter是...
apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...
例如,这个版本提高了构建速度,修复了一些已知问题,同时增强了对Java 9和10的支持。此外,它还引入了新的插件管理和依赖解析机制,使得项目的构建更加高效和可靠。 安装Maven 3.5.4的步骤通常包括以下几个部分: ...
在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...