之前的一片老文,搬过来。

1. Maven的开发环境需要哪些部件
a) Maven。
去http://maven.apache.org/ 下载。将其bin目录加入进系统PATH。测试方法:用命令mvn –version。


b) m2eclipse插件(可选)。
如果你习惯命令行的方式用maven,可以忽略。在线安装的site为http://download.eclipse.org/technology/m2e/releases/1.4 如果你在安装插件过程中因某些原因导致下载或安装失败,请寻找安装了m2eclipse的eclipse包。一般来讲安装m2eclipse插件的时候,会需要依赖一些其他的插件,然而部分这些被依赖的插件,又恰巧会不幸下载失败,导致了m2eclipse插件安装的时候失败的可能性比较大。所以建议全程翻墙。
c) 私服。
这里以nexus为例子。
i. 为什么要私服
1. 针对项目组不能直接连接外网或者不能直接从外网下载jar的情况,私服可以充当一个代理的角色。
2. 部分你所依赖的jar因为某些原因不在中央仓库。比如oracle的JDBC驱动就因版权问题不在中央仓库。所以你要自己将ODBC维护在你的私服上。
3. 项目组内多小组使用maven开发,小组之间的jar又存在依赖关系。私服可以用来发布小组的jar提供给其他小组依赖。
ii. 怎么部署nexus
1. 去http://download.sonatype.com/nexus/oss/nexus-2.8.0-05-bundle.zip 下载。如无法下载,请去http://www.sonatype.org/nexus/go 寻找新的下载链接。如果你有tomcat服务器可以直接下载他的war来部署。
2. 注意:目前的nexus新版本需要JDK7+。第一次使用需要安装: 去nexus-2.6.0-05-bundle\nexus-2.6.0-05\bin目录下 nexus.bat install(注意如果是win7用户,需要用管理员方式启动cmd。否则权限不够,下同)
3. 启动 nexus.bat start
4. 需要修改端口号的:修改conf/ nexus.properties文件中application-port字段即可。如果是war包部署的,直接修改tomcat的端口号。Orz.
5. 访问http://localhost:8081/nexus 管理员的用户名和密码是 admin/admin123

2. Maven工程的创建及目录结构的介绍
a) 使用之前先配置eclipse中的maven插件
Window/Preferences/Maven/Installations add 你自己安装的maven,不要用插件自带的。继续修改User Settings,选择你自己maven的conf目录下的settings.xml文件。
b) 修改settings文件。
就在a步骤中配置settings文件路径的地方,有open file,这样就在eclipse中打开了settings.xml文件,找到mirrors标签,加上镜像配置,修改后类似下面所示:

<mirrors>
<mirror>
<id>internal_repo</id>
<name>Internal Repo Manager</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

Localhost就是你部署nexus的私服的地址,根据自己的实际情况,自行修改。
c) 创建工程
使用eclipse的向导new/Maven project/next/next/填写GroupId(例如org.simonme),artifact ID 如demo1,package 如org.simonme.demo1,finish。
d) 增加依赖的jar
比如以开发者需要依赖apache的common lang3。用google搜索关键字maven apache common lang,即可以找到 http://mvnrepository.com/artifact/org.apache.commons/commons-lang3/3.0 这个链接,进去查看,将maven页签下的依赖信息复制下来直接贴到工程的pom.xml dependencies中。此时观看工程左边的maven依赖库就能看common lang已经被自动加入进工程的classpath中。如下图:


在App.java中用代码测试下

package org.simonme.demo1;

import org.apache.commons.lang3.StringUtils;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
System.out.println(StringUtils.isEmpty(""));
}
}

没问题能正常运行。
e) 在工程上右击, Run as/Maven test
这样可以将整个工程编译并运行单元测试。
f) 如果要创建一个web工程
修改pom.xml的jar成war
g) 对工程打包
在命令行中,去工程的目录下,mvn clean package。还可以跳过单元测试进行打包,加上-Dmaven.test.skip=true即可。
3. 在私服上上传jar
这种情况主要针对中央仓库没有你要的jar。
http://localhost:8081/nexus admin登陆后,点击左边的Repositories,选择右上3rd party仓库,不要选其他仓库,选择右下的Artifact Upload,GAV Definition: 选择From POM,选择你要上传jar的pom文件(如果你没有,可以去网上搜索),上传你的jar。
4. 关联source和doc
当你在写代码的时候需要看哪个类的代码的时候,f3以后,代码jar会被自动下载和关联上来,方便的很。(第一次按,会有点慢,注意eclipse的右下角,Download source…)
如果maven没有自动下载源码jar或者javadoc jar:
先检查是否在首选项中开启了这个功能

若是还是下载不了的。可以尝试下面这个办法:
那就去你的本地仓库 删除.lastUpdated结尾的文件!!

本地仓库我用的是默认的C:\Users\chenxiaguang\.m2\repository

然后执行下面的命令
mvn dependency:resolve -Dclassifier=javadoc -U
mvn dependency:resolve -Dclassifier=source  -U

执行成功后类似这样:

有时候这个办法也不行,可以重启eclipse后依靠m2eclipse的自动source jar的功能试试。

这个问题我目前还没时间去彻底调查清楚。

5. 用jetty调试工程
参见 http://hi.baidu.com/yyjt1987/item/f55a2ab1538cc8d184dd79ad 图文并茂,经验证可用。

百度空间关闭了,上面的链接用不了,重新贴一个写的比较详细的,图文并茂的maven工程开启jetty调试 http://czj4451.iteye.com/blog/1942437

6. eclipse中jar不能自动下载问题

在eclipse中创建了新的maven工程后,修改pom增加需要依赖的jar,在增加jar依赖时,经常出现jar包不能自动下载,导致编译出错。

解决办法:
在命令行执行mvn clean install
然后在eclipse中右击工程maven/update project

7. war包的问题

在pom文件中增加war插件依赖

<build>
<filters>
<!-- 过滤文件,通常是一个属性文件(名值对的形式) -->
<!-- <filter>src/main/webapp/META-INF/auto-config.properties</filter> -->
<!-- <filter>${user.home}/antx.properties</filter> -->
</filters>
<finalName>hibernate_demo</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- 打包之前过滤掉不想要被打进 .war包的jar,注意:这个地方,本来路径应该是 WEB-INF/lib/anaalyzer-2.0.4.jar,但是经过多次试验,不能这样,至于咋回事儿,搞不清楚。。经多方查证均无结果
暂且这样吧,虽然显得很丑陋,但是总能解决问题吧 -->
<warSourceExcludes>*/lib/analyzer-2.0.4.jar</warSourceExcludes>
<webResources>
<resource>
<!-- 元配置文件的目录,相对于pom.xml文件的路径 -->
<directory>src/main/webapp/WEB-INF</directory> <!-- 是否过滤文件,也就是是否启动auto-config的功能 -->
<filtering>true</filtering> <!-- 目标路径 -->
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>

8.Maven项目编译后classes文件中没有.xml问题

参见 http://www.cnblogs.com/wbb2109/p/3999247.html

在pom的build标签内加一段配置即可

<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>

其实出现这个问题是由于不规范造成的,按maven的目录规划,xml属于资源文件,需要将其放到resource下,这样的mvn在编译的时候会自动将其copy到clasess中

当你按规范的去放置文件后,就需要将上面的resources配置去掉了。

9. 添加只用于测试期或者编译期的jar

有时候我们需要添加只用于编译期的jar,比如servlet的jar
或者只用于测试的比如 junit的
怎么做,用scope就可以了

<!-- 添加Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:
    * compile,缺省值,适用于所有阶段,会随着项目一起发布。
    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
    * test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
    * system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

10. 打出来的war包中的classes中没有文件

1) 检查src/main下是否有java类或者资源文件,打war包时,mvn是不会将test下的类或者资源打进war包的!!

11. 打包时跳过单元测试

mvn package -Dmaven.test.skip=true

12. 打包时在命令行中指定编译用的JDK版本

mvn package -Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8

13. 带上依赖jar的打包

     <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>TestLegionStore</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef> <!-- 内置配置:这里使用的是jar-with-dependencies -->
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.ss.middleware.TestLegionStore</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin> </plugins>
</build>

14. 在POM中指定编译用的JDK版本

     <build>
<plugins>
<!-- 指定jdk版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<!-- 源码的编译器版本 -->
<source>1.7</source>
<!-- class的编译器版本 -->
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

Maven开发环境的搭建,含jetty调试[简单明了]的更多相关文章

  1. JAVA学习:maven开发环境快速搭建

    转自:http://tech.it168.com/a2011/1204/1283/000001283307.shtml 最近,开发中要用到maven,所以对maven进行了简单的学习.因为有个mave ...

  2. 【Maven实战】Maven开发环境的搭建和案例展示

    1.首先到www.apache.org中下载maven,得到一个apache-maven-3.1.0-bin.zip的压缩包. 2.将此压缩包解压,这里解压到D:\docs中,然后找到maven的bi ...

  3. Eclipse搭建maven开发环境

    上一篇学习了maven开发环境的搭建,而且手动编写了一个mavenproject,可是这样子效率非常低下.今天带大家学习在eclipse下搭建maven开发环境. 经常使用的maven命令 mvn c ...

  4. Idea开发环境中搭建Maven并且使用Maven打包部署程序

    1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...

  5. 转】[1.0.2] 详解基于maven管理-scala开发的spark项目开发环境的搭建与测试

    场景 好的,假设项目数据调研与需求分析已接近尾声,马上进入Coding阶段了,辣么在Coding之前需要干马呢?是的,“统一开发工具.开发环境的搭建与本地测试.测试环境的搭建与测试” - 本文详细记录 ...

  6. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

  7. Apache+MySQL+PHP开发环境的搭建(二)

    通过自主选择相应的apache,mysql,php等软件,根据自己的应用开发需求进行安装.此方法搭建的环境自主性较强,搭建过程较为复杂,繁琐. 1.所需软件: Apache: http-2.2.22- ...

  8. windows Android开发环境快速搭建和部署

    windows安装Android的开发环境相对来说比较简单,本文写给第一次想在自己Windows上建立Android开发环境的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对初级 ...

  9. windows下STM32开发环境的搭建

    一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...

随机推荐

  1. {转自MC}NVIDIA DirectX 11演示DEMO详解

    http://tieba.baidu.com/p/1960826986 图形技术无论如何发展,最终都要落到实际的应用中才有效果.在个人电脑上,图形技术最大的用户除了显示UI和操作界面外,就是呈现美轮美 ...

  2. 实现Fragment 切换时不重新实例化

    以前实现Fragment的切换都是用replace方法实现 public void startFragmentAdd(Fragment fragment) { FragmentManager frag ...

  3. 根据设备宽高动态设置View的大小

    得到设备屏幕宽高: WindowManager wManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); ...

  4. 使用FROM确认按钮(键盘13号键)提交特性并使用ajax.POST提交.

    如果又想使用FROM确认按钮(键盘13号键)提交特性  还能继续用AJAX.POST提交.就需要使用return false 来阻止FROM默认提交 代码如下: HTML页面 这里最关键就是用了ret ...

  5. spotlight监控工具使用

    利用spotlight工具可以监控如下系统:        1.Spotlight on Unix 监控Linux服务器 1)安装 Spotlight on Unix 2)配置spotlight登陆用 ...

  6. OneDrive无法正常登录

    可能是DNS被污染 手动设置DNS 134.170.108.26 onedrive.live.com134.170.108.152 skyapi.onedrive.live.com

  7. Spring IoC反转控制的快速入门

    * 下载Spring最新开发包 * 复制Spring开发jar包到工程 * 理解IoC反转控制和DI依赖注入 * 编写Spring核心配置文件 * 在程序中读取Spring配置文件,通过Spring框 ...

  8. 【转】 Build a RESTful Web service using Jersey and Apache Tomcat 2009

    Build a RESTful Web service using Jersey and Apache Tomcat Yi Ming Huang with Dong Fei Wu, Qing GuoP ...

  9. volatile in thread

    public class TestCalc { public static void main(String[] args) { class StoppableThread extends Threa ...

  10. ubuntu 制作deb 包

    ubuntu下打包制作deb安装包 http://www.th7.cn/system/lin/201406/61012.shtml   2014-06-22 20:16:45CSDN-yangbing ...