eclipse MAVEN插件正确使用方式。

2 篇文章 0 订阅
  • 首先贴出我的MAVEN的setting.xml文件,嗯,我也怕忘了下次再怎么去配置。
<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


  <pluginGroups>

  </pluginGroups>


  <proxies>

  </proxies>


  <servers>
    <server>
        <id>releases</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>admin</username>
        <password>admin123</password>
    </server>
    <!-- 自动打包部署到tomcat,用户名和密码对应tomcat/conf/tomcat-users.xml的配置 -->
    <server>
        <id>tomcat7</id>
        <username>manager</username>
        <password>cc830905</password>
    </server> 
  </servers>

  <mirrors>

  </mirrors>

  <profiles>
     <!-- 配置maven创建工程时使用的JDK编译版本 -->
    <profile>
      <id>jdk17</id>  
     <activation>  
          <activeByDefault>true</activeByDefault>  
          <jdk>1.7</jdk>  
     </activation>  
     <properties>  
          <maven.compiler.source>1.7</maven.compiler.source>  
          <maven.compiler.target>1.7</maven.compiler.target>  
          <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>  
     </properties> 
    </profile>

    <profile>  
    <id>dev</id>  
    <repositories>  
      <repository>  
        <id>local-nexus</id>  
        <url>http://cc.thiscc.com:8081/nexus/content/groups/public/</url>  
        <releases>  
          <enabled>true</enabled>  
        </releases>  
        <snapshots>  
          <enabled>true</enabled>  
        </snapshots>  
      </repository>

      <repository>
        <id>people.apache.snapshots</id>
        <url>http://repository.apache.org/content/groups/snapshots-group/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
      </repository>  
    </repositories>  
  </profile>  
</profiles>

<activeProfiles>  
  <activeProfile>dev</activeProfile>  
</activeProfiles>

</settings>

使用eclipse创建maven web工程的步骤:

  1. new–>Project…–>Maven Project
    这里写图片描述
    这里写图片描述
    这里写图片描述
  2. 配置项目运行容器tomcat
    这里写图片描述
    这里写图片描述
    这里写图片描述

  • 问题:经常创建maven项目后,pom.xml头会报诸如:Description Resource Path Location Type Could not calculate build plan: Failure to transfer xxx.xxx...的错误。
    比如:
    错误图片

    • 原因:
      • 使用maven下载jar包的过程中,很容易因为各种原因(网速慢、断网)导致jar包下载不下来,出现很多.lastUpdated文件。因为这些文件的存在,导致jar包没能正确下载下来,所以maven找不到相关的jar包。
      • 解决办法:去本地仓库目录repository删除.lastUpdated后缀的文件。这里提供两个平台批量删除的脚本:

for windows平台:

cd %userprofile%\.m2\repository
for /r %i in (*.lastUpdated) do del %i

for linux平台

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

删除完成之后,在右键项目工程,选择Maven–>Update Project...更新一下即可。


  • 问题: 在Eclipse中新建了一个Maven工程, 默认生成的JDK版本是1.5,然后更改JDK版本为1.7, 结果每次使用Maven > Update project的时候JDK版本都恢复成1.5。
    • 原因:
      • 这是Maven已知的一个特性。除非在你的POM文件中显示的指定一个版本,否则会使用编译器默认的source/target版本1.5。主要还是在于Eclipse中Maven的集成方式起到了关键作用, 它会从POM文件中生成项目的.project,.classpath以及.settings, 因此除非POM文件指定了正确的JDK版本, 否则你每次更新项目配置的时候它都会重置到1.5版本。
    • 解决办法: 在项目的pom.xml文件中增加如下配置:
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source> <!-- 源代码使用的开发版本 -->
          <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
          <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
          <encoding>UTF8</encoding> 
          <!--windows默认使用GBK编码,java项目经常编码为utf8,也需要在compiler插件中指出,否则中文乱码可能会出现编译错误-->
        </configuration>
      </plugin>
    </plugins>
</build>

参考官方示例:http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html


  • 技巧:上面的方法每次都要去生成的工程中去修改pom,项目多的话修改起来很麻烦,这里有个一劳永逸的办法,修改eclipse 创建maven项目设置默认jdk版本

    • 只需要在maven的setting.xml文件中 的 profiles 节点 加入如下代码片段:
<profile>  
    <id>jdk17</id>  
     <activation>  
          <activeByDefault>true</activeByDefault>  
          <jdk>1.7</jdk>  
     </activation>  
     <properties>  
          <maven.compiler.source>1.7</maven.compiler.source>  
          <maven.compiler.target>1.7</maven.compiler.target>  
          <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>  
     </properties>   
</profile>  

官方解释:http://maven.apache.org/plugins/maven-compiler-plugin/index.html


  • **问题:使用Maven > Update project的后项目编码UTF-8被改成GBK的问题。
    • 原因:当在DOS下执行mvn compile命令时,默认使用的是系统的GBK格式编码。
    • 解决办法:在pom.xml中指定编码。
<properties>
    <!-- 文件拷贝时的编码 -->
    <project.build.sourceencoding>UTF-8</project.build.sourceencoding>
    <project.reporting.outputencoding>UTF-8</project.reporting.outputencoding>
    <!-- 编译时的编码 -->
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>

  • 技巧:创建支持Java Servlet3.0的Maven Webapp项目
    • 首先明确一个概念:dynamic web module version与tomcat以及JDK之间的对应关系
dynamic web module version对应的tomcat对应的J2EE
2.3未知JAVA1.3以上
2.4tomcat5.5以上JAVA1.3以上
2.5tomcat6以上JAVA1.5以上
3.0tomcat7以上JAVA1.6以上
3.1tomcat8以上JAVA1.7以上

这里我也不是很懂,找了半天资料都没搞明白这什么玩意o(╯□╰)o,我的理解大概就是如果你用的dynamic web module是3.0的,那么你把这个项目部署在tomcat6里面去运行是不行滴,用1.7版本一下的JDK也是不行滴,嗯,大概就是这样。理解错了欢迎给我指正。

这个技巧是由一个问题引出来的:那就是当你右键eclipse的工程,选择属性,再选择Project Facets里面中选择Dynamic Web Module,想修改这个Module版本的时候,提示你:

Cannot change version of project facet Dynamic Web Module to 3.0

就是死活不让修改!那我们只能暴力执法了→_→,去修改配置文件:
这里写图片描述

另外这里还有另一种解决方式,我就不赘述了,英语比较好的去参考一下歪果仁的思路—>传送门

到这里还不算完,还有一个地方需要我们去修改一下,那就是web.xml文件。
这里写图片描述
当你修改Dynamic Web Module后,Update Project…后就会看到上面这样子的图。这是web.xml声明中的版本和Dynamic Web Module不一致造成的,那么我们就来修改一下web.xml这个声明:
这里写图片描述

方便伸手党copy的代码在下面:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>xcrm</display-name>
</web-app>

再次右键工程–>Maven–>Update Project…,大功告成,一个没有红叉叉的maven web项目就这样完成了。


哎,另一种方式也记录一下吧,就是上面传送门歪果仁用的方法,照顾一下英语和我一样渣的童鞋。。最主要的区别就是,这种方式可以直接在eclipse里面完成,而不用重启eclipse。进入正题:

  1. 创建maven project,没什么好说的,大把的教程了。
  2. 右键工程–>properties–>project facets,此时如下:
    这里写图片描述
    我们要做的就是先把Dynamic Web Module的勾去掉,再Apply。

  3. 此时我们再去把它勾上,现在你就可以任意选择版本了,如下:
    这里写图片描述
    点击Apply之后,此时我们会发现,在工程目录里面多了个WebContent目录。

  4. 把它自动给我们添加的WebContent目录删除掉,在右键工程–>properties–>Deployment Assembly中该删的删了,该添加的加上,最终下面这张图一样就差不多了。
    这里写图片描述
    这里配置的其实就是项目部署的目录,很明显,我们要把src/main/java和src/main/resource里面的文件要发布到项目的WEB-INF/classes目录里面,src/main/webapp下的文件发布到项目的/目录下面,当然maven Dependencies里面自动下载下来的jar包就要部署到项目的WEB-INF/lib目录下面了。

  5. 最后,同样的还得修改一下web.xml的声明和Dynamic Web Module版本对应,同上。修改完后别忘了右键工程–>Maven–>Update Project… 嗯!The END!


如何下载maven中依赖包的源码?

有些时候,遇到程序莫名其妙的错误的时候,可能需要去看源码找问题,如果不是maven工程,你可能需要一个一个的去下载jar包所对应的源码,然后再通过link关联起来,既麻烦也不优雅。但是如果是maven工程,这一切都好办,只要一个命令mvn dependency:sources就能解决。
右键工程–>Run As–>Maven build,在Goals中输入dependency:sources,再点击Run,然后等它下载完就行了。
这里写图片描述
so easy!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值