`
iffiffj
  • 浏览: 158762 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

[转载]Maven相关问题及使用

    博客分类:
  • WEB
阅读更多
Maven相关问题及使用
(1)Maven archetype:generate
(2)mkdir src\main\resources,src\test\resources
(3)添加parent
<parent>
    <groupId>com.alibaba</groupId>
    <artifactId>pampas</artifactId>
    <version>3-RC1</version>
</parent>


1、Maven指定编译级别
用maven来编译java类时,一个类总是出现不支持泛型的错误提示。泛型是从JDK5.0+才开始支持的,而我在eclipse中所用的JRE版本都是5.0以上的。后来才发现必须在pom.xml文件中加入下一面一段语句来指定所用的版本,尽管在eclipse中配置了正确的“Build Path”。
<build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <target>1.6</target>
          <source>1.6</source>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>


2、Eclipse的编译级别
project工程名->Properties->Java Compiler->Compiler compilance level使用1.5以上的
且勾上‘use default compliance settings’

3、Eclipse中出现maven的相关依赖
右键点击工程名 -> maven -> Update Project Configuration, 则会出现一个叫Maven Dependencies的libaray包。

4、Maven排除应用的jar包
<dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.15</version>
      <exclusions>
        <exclusion>
          <groupId>com.sun.jdmk</groupId>
          <artifactId>jmxtools</artifactId>
        </exclusion>
        <exclusion>
          <groupId>com.sun.jmx</groupId>
          <artifactId>jmxri</artifactId>
        </exclusion>
      </exclusions>
    </dependency>


5、在maven中可能存在如下的错误
Failure executing javac, but could not parse the error:
错误:读取 C:\Documents and Settings\keju.wangkj\.m2\repository\com\sun\jdmk\jmxtools\1.2.1\jmxtools
-1.2.1.jar 时出错;error in opening zip file
错误:读取 C:\Documents and Settings\keju.wangkj\.m2\repository\com\sun\jmx\jmxri\1.2.1\jmxri-1.2.1.
jar 时出错;error in opening zip file
2 错误

解决方案:由于maven下载了空壳的jar包在仓库中,只有1k左右,删除之后让maven重新下载

6、Maven打包依赖
<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>


执行命令:mvn assembly:assembly, 执行完成之后会把相关的依赖一起打包

7、创建resource文件
mkdir -p src/{main/java/com/mycompany/webapp,test/java/com/mycompany/webapp,test/resources}
【注意】这是在linux下运行的, 而在windows下面使用'\',且不用'-p'

8、修改工程的仓库
1.Maven2的依赖库查询
http://www.mvnrepository.com/

2.更改默认的maven2的仓库,需在pom.xml文件中添加设置(如有私服须放置在前面)
  
< repositories>
           < repository>
            < id>ibiblio< /id>
            < name>Ibiblio Maven Repository< /name>
            < url>http://www.ibiblio.org/maven2< /url>
            < layout>default< /layout>
        < /repository>
        < repository>
            < id>maven< /id>
            < name>Slowly office site< /name>
            < url>http://repo1.maven.org/maven2< /url>
        < /repository>
  < /repositories>
<repositories><repository> </repository></repositories>

------------------------------------------------------------------------------------------
修改%M2_HOME%/conf/settings.xml即可
确实是改settings.xml比较一劳永逸,每个项目的pom都去加repository对配置管理是不利的。

9、Maven版本差别造成的问题
在2.0.9下编译完全没有问题, 而在2.0.10以上的版本编译的哦时候出现以下问题:
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error configuring: org.apache.maven.plugins:maven-antrun-plugin. Reason: java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.close(Ljava/io/InputStream;)V


原理分析和解决方案:
由于多个包里面的引用的相同jar包的版本有问题,需要使用
<exlutions></exlutions>

10、Maven问题排查方式
如何诊断在Maven构建过程中碰到的问题?可以看一下这些手段:

    1. 你正运行什么版本的Maven? 如果不是Maven 2.0.9或以上,你需要升级。 Maven 2.0.9是第一个设置了核心插件版本的Maven版本。为什么这很重要呢?因为在2.0.9之前,Maven会自动下载核心插件的最新版本,比如jar插件和compiler插件。而最新版本插件由于其不稳定性可能导致你的构建失败。因此,如果你还在使用2.0.9以下的Maven,升级吧。

    2. 有时候遇到奇怪问题的时候,清理一下你的本地仓库。检查一下snapshots的更新策略。

    3. 使用:
mvn help:effective-pom      查看有效POM
mvn help:effective-settings    查看有效settings
mvn help:active-profiles    查看激活的profile
这些命令会检查所有的的pom文件,settings文件,profile文件,帮助你查看其中的差异和影响。可能有些人在~/.m2/settings.xml 或者M2_HOME/conf/settings.xml做了自定义。(详细请参考http://www.sonatype.com/book/reference_zh/installation.html)

   4. 你是否正使用公共仓库?时候有两台机器访问不同的仓库?如果你没有使用Nexus,我建议你下载并运行使用它 ,它能让你更好的了解配置仓库,并且是一个很好的发布构件的地方。
-~-~—~-~-~-~-~

我再补充两点:
   5. 使用-X参数查看Maven详细运行情况,如 mvn clean install -X ,让Maven打开debug日志。
   6. 将完整的异常信息,pom.xml, settings.xml 发到我们的讨论组:http://groups.google.com/group/maven-zh ,这里总有热心的人帮助你。

11、自定义Maven本地仓库的位置
可以在运行时指定本地仓库位置:
mvn clean install -Dmaven.repo.local=/home/juven/myrepo/
Maven缺省的本地仓库地址为${user.home}/.m2/repository 。也就是说,一个用户会对应的拥有一个本地仓库。
你也可以自定义本地仓库的位置,修改${user.home}/.m2/settings.xml :
<settings>    
    ...    
    <localRepository>D:\java\repository</localRepository>    
    ...    
</settings>    

12、执行main函数
java -cp target\helloworld-1.0-SNAPSHOT.jar org.marshal.App
13、为Web项目增加WTP支持
mvn -Dwtpversion=1.0 eclipse:eclipse
什么是eclipse wtp 中的wtp
wtp(web tools platform )项目在eclipse平台上进行扩展,是一个开发j2ee web应用程序的工具集。wtp包含以下工具:
* 一个源码编辑器www.ssbbww.com用来编辑html, javascript, css, jsp, sql, xml, dtd, xsd, 和wsdl。
* 一个图形编辑器用来编辑xsd与wsdl。
* j2ee项目构建器和一个j2ee向导工具。
* 一个web服务创建向导和管理器,和ws-i 测试工具。
* 一个数据库访问,查询工具等。
wtp由两个子项目构成:wst(web标准工具集) 与jst(j2ee标准工具集)8ttt8 wtp是什么意思 是什么东西_什么叫-什么是wtp
wtp支付愿意原则,用于分析社会成员为项目所产出的效益愿意支付的价值。

14、如何定制工程的目录结构
参考http://www.360doc.com/content/07/0302/18/7147_381901.shtml

15、在Eclipse中Maven报错:
Maven中无法找org.apache.maven:maven-artifact:jar:2.0.9,需要手动下载等
Description  Resource  Path  Location  Type
Missing:
----------
1) org.apache.maven:maven-artifact:jar:2.0.9

    Try downloading the file manually from the project website.

    Then, install it using the command: 
            mvn install:install-file -DgroupId=org.apache.maven -DartifactId=maven-artifact -Dversion=2.0.9 -Dpackaging=jar -Dfile=/path/to/file

    Alternatively, if you host your own repository you can deploy the file there: 
            mvn deploy:deploy-file -DgroupId=org.apache.maven -DartifactId=maven-artifact -Dversion=2.0.9 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

    Path to dependency: 
      1) org.apache.maven.plugins:maven-enforcer-plugin:maven-plugin:1.0-beta-1
      2) org.apache.maven:maven-artifact:jar:2.0.9

解决方案:
1、在eclipse中检查自己使用的maven版本和eclipse的版本
2、检查eclipse使用的maven的相关配置: Windows -> Preferences -> Maven ->  Installations, 查看本地user级别settings.xml, global级别settings.xml, 本地仓库等

16、mvn assembly:assembly中出现重复的class文件
最近学习Maven遇到一个问题,使用
mvn assembly:assembly
打包项目里面有重复的class文件,如图:


后来Google了一下也没有找到解决办法,在Maven群里面有人说版本问题,然后就指定了maven-assembly-plugin插件的版本号,虽然是Beta版的,解决问题就可以了,配置如下:
<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>2.2-beta-5</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

17、使maven2在下载依赖包的同时下载其源代码包。
使maven2在下载依赖包的同时下载其源代码包的方法:
1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码。
2. 使用参数: -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包。

18、生成目录结构
Windows下demo
mkdir src\main\resources,src\test\resources
再使用mvn eclipse:eclipse之后,再导入eclipse中(如果已经在eclipse中的,只需要刷新整个eclipse工程即可)

windows下,创建完整的目录结构
mkdir src\main\java\com\alibaba, src\main\resources, src\test\java\com\alibaba,src\test\resources

19、仓库依赖查询
http://repo.alibaba-inc.com/archiva/index.action

20、自动报告的生成:mvn site
<reporting>    
<outputDirectory>target/site</outputDirectory>    
<plugins>    
    <plugin>    
     <groupId>org.codehaus.mojo</groupId>    
     <artifactId>cobertura-maven-plugin</artifactId>    
    </plugin>    
</plugins>    
</reporting> 

<plugin>    
<groupId>org.codehaus.mojo</groupId>    
<artifactId>cobertura-maven-plugin</artifactId>    
<configuration>    
    <instrumentation>    
     <!--<ignore>.*</ignore>    
     -->    
     <excludes>    
        <exclude>**/*Test.class</exclude>    
     </excludes>    
    </instrumentation>    
</configuration>    
<executions>    
    <execution>    
     <goals>    
        <goal>clean</goal>    
     </goals>    
    </execution>    
</executions>    
</plugin>    


21、mvn autoconf
描述:autoconfig工具的封装,允许在编译时,或者编译后进行参数配置。
注意:如果你使用了m2eclipse,发现eclipse进程挂起,请在eclipse.ini文件里面加上-DinteractiveMode=false,这样eclipse在编译项目的时候就不会执行autoconfig了,需要执行autoconfig,请在命令行使用mvn autoconf:config
mvn autoconf:autoconf -Dproperties=/home/jiangyr/antx_subscription.properties

22、mvn帮助插件
help:active-profiles
列出当前构建中活动的Profile(项目的,用户的,全局的)。
help:effective-pom
显示当前构建的实际POM,包含活动的Profile。
help:effective-settings
打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的
配置。
help:describe
描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件
的 groupId 和 artifactId。
eg: mvn help:describe -Dplugin=assembly
分享到:
评论

相关推荐

    【转载】Maven 模块划分

    3. 使用Maven的模块化优势: - 代码复用:模块间的代码可以通过API接口进行复用,减少代码量,提高效率。 - 独立开发:每个模块可以独立开发和测试,降低了复杂性。 - 易于维护:模块化使项目结构清晰,易于理解...

    用Maven整合SpringMVC+Spring+Hibernate 案例

    myeclipse 10.6+maven3+srping+srpingmvc+hibernate4.1+mysql5.5,博客地址:http://blog.csdn.net/liu1220356497/article/details/47701565,该博客是我转载原来的博客主的,里面有很多问题,有的改了,有的没改,...

    SSM项目使用maven-跑腿小程序后台

    SSM项目使用maven-跑腿小程序后台 https://blog.csdn.net/dearmite/article/details/132200779 系列环境 环境 win11 工具 idea 2018 jdk 1.8 数据库 mysql5.5 maven 不用 项目导入方式 目录导入 数据库前端工具 ...

    MAVEN工具篇-maven打包跳过测试

    使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译; 使用 mvn package -DskipTests 跳过单元测试,但是会继续编译。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC...

    Maven+SpringMVC+Dubbo 简单的入门demo配置

    Maven+SpringMVC+Dubbo 简单的入门demo配置 源码,,,亲测好用。 具体说明可见这篇转载过来的文章:https://blog.csdn.net/mijichui2153/article/details/81711480

    easyUi页面开发插件

    由于项目需求,要使用富客户端,选择了EasyUI,之前并没有接触过,上网搜索一番,没有找到完整的中文文档,项目组又没有英语达人,无奈之下,我硬着头皮,把官方提供的英文文档啃了,一边啃顺便用中文记录下来。...

    基于ssm(非maven)的学生选课管理系统.zip

    本系统分为三种权限: ...版权声明:本文为CSDN博主「maker011」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/mataodehtml/article/details/118223204

    Ehcache集成Spring的使用(转载)

    1. **引入依赖**: 在 Maven 或 Gradle 的配置文件中添加 Ehcache 和 Spring 相关的依赖。例如,如果是 Maven,可以在 `pom.xml` 文件中加入如下依赖: ```xml &lt;groupId&gt;net.sf.ehcache&lt;/groupId&gt; &lt;artifactId&gt;...

    JSP+Serlvet+JavaBean+Maven+MySql 学生 | 学籍 | 信息管理系统实战 Eclipse版本

    为新学习 JSP 的开发爱好者小白写下这篇文章,教...以下所有信息都是个人完成,若有转载或者借鉴请注明出处。大家可以参考我的博客进行参考部署开发。原文:https://blog.csdn.net/youxun1312/article/details/89342694

    JSP+Serlvet+JavaBean+Maven+MySql 学生 | 学籍 | 信息管理系统实战 Idea版本

    为新学习 JSP 的开发爱好者小白写下这篇文章,教...以下所有信息都是个人完成,若有转载或者借鉴请注明出处。大家可以参考我的博客进行参考部署开发。原文:https://blog.csdn.net/youxun1312/article/details/89342694

    利用Maven开发的一个基于Servlet的BigPipe简单案例.zip

    BigPipe的主要思想是实现浏览器和服务器的并发执行,实现页面的异步加载从而提高页面加载速度....客户端浏览器会根据pagelet的id或标识符,在页面的制定区域对pagelet进行转载渲染.客户端的模块加载采用js技术.

    deeplearning4j.zip (自己封装,deeplearning4j和apache的资源)欢迎转载

    这个压缩包“deeplearning4j.zip”包含了开发者封装的资源,结合了deeplearning4j库与Apache的相关组件,特别是Maven构建工具,便于项目管理和构建。下面我们将详细探讨这两个核心部分。 ** Deeplearning4j ** ...

    mavenjava源码-notebook:Java自学系列知识,包含Java基础、源码阅读、JVM、MySQL、Spring相关等

    maven java 源码 notebook ...本项目采用协议,因为基本都是自己的原创笔记、博客,希望大家使用或转载时可以尽量注明出处 参与共建 如果你对本项目的内容感兴趣,有相关的想法来完善项目,欢迎来提issue

    JAVA OA平台源码(转载)SPRING BOOT....

    【标题】:“JAVA OA平台源码(转载)SPRING BOOT...” 这个开源项目是一个基于Java技术的OA(Office Automation)管理系统的源代码实现,利用了Spring Boot框架进行开发。Spring Boot是Spring生态中的一个核心组件...

    SpringMVC-Hibernate:J2EE项目系列(二)-博客管理系统(Maven + SpringMVC + Hibernate以及附加分页和一对多查询功能)

    J2EE项目系列(二)-博客管理系统(Maven + SpringMVC + Hibernate以及附加分页和一对多查询功能)大家在使用过程中,可先阅读我的博客会有更好的理解。转载请注明:【JackFrost的博客】更多内容,可以访问喜欢就给...

    转载一个优秀的开源项目

    8. **构建工具**:如Maven、npm或pip的配置文件,用于自动化构建和部署过程。 要深入了解SUSHIDO Project,你需要解压这个压缩包,阅读源代码、文档和博客文章,了解项目的具体实现和使用方式。此外,参与到开源...

    Spring + Quartz配置实例(转载)

    标题 "Spring + Quartz配置实例(转载)" 暗示了我们将讨论如何在Java环境中整合Spring框架与Quartz作业调度库的使用。Quartz是一个开源的作业调度库,它允许开发者安排任务以在特定时间执行,而Spring框架则是一个...

    VUE登陆/登录的大作业-【VUE项目实战】资源2

    环境及工具: 本系列环境 环境 win11 工具 idea 2017 jdk 1.8 数据库 mysql5.5 ...版权声明:本文为CSDN博主「项目花园范德彪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

    VUE登陆/登录的大作业带打包资源1

    环境及工具: 本系列环境 环境 win11 工具 idea 2017 jdk 1.8 数据库 mysql5.5 ...版权声明:本文为CSDN博主「项目花园范德彪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

Global site tag (gtag.js) - Google Analytics