Maven开发环境的搭建,含jetty调试[简单明了]
之前的一片老文,搬过来。
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调试[简单明了]的更多相关文章
- JAVA学习:maven开发环境快速搭建
转自:http://tech.it168.com/a2011/1204/1283/000001283307.shtml 最近,开发中要用到maven,所以对maven进行了简单的学习.因为有个mave ...
- 【Maven实战】Maven开发环境的搭建和案例展示
1.首先到www.apache.org中下载maven,得到一个apache-maven-3.1.0-bin.zip的压缩包. 2.将此压缩包解压,这里解压到D:\docs中,然后找到maven的bi ...
- Eclipse搭建maven开发环境
上一篇学习了maven开发环境的搭建,而且手动编写了一个mavenproject,可是这样子效率非常低下.今天带大家学习在eclipse下搭建maven开发环境. 经常使用的maven命令 mvn c ...
- Idea开发环境中搭建Maven并且使用Maven打包部署程序
1.配置Maven的环境变量 a.首先我们去maven官网下载Maven程序,解压到安装目录,如图所示: b.配置M2_HOME的环境变量,然后将该变量添加到Path中 备注:必须要有JAVA_HOM ...
- 转】[1.0.2] 详解基于maven管理-scala开发的spark项目开发环境的搭建与测试
场景 好的,假设项目数据调研与需求分析已接近尾声,马上进入Coding阶段了,辣么在Coding之前需要干马呢?是的,“统一开发工具.开发环境的搭建与本地测试.测试环境的搭建与测试” - 本文详细记录 ...
- JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java
JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...
- Apache+MySQL+PHP开发环境的搭建(二)
通过自主选择相应的apache,mysql,php等软件,根据自己的应用开发需求进行安装.此方法搭建的环境自主性较强,搭建过程较为复杂,繁琐. 1.所需软件: Apache: http-2.2.22- ...
- windows Android开发环境快速搭建和部署
windows安装Android的开发环境相对来说比较简单,本文写给第一次想在自己Windows上建立Android开发环境的朋友们,为了确保大家能顺利完成开发环境的搭建,文章写的尽量详细,希望对初级 ...
- windows下STM32开发环境的搭建
一.概述 1.说明 笔者已经写了一篇Linux下STM32开发环境的搭建 ,这两篇文章的最区别在于开发环境所处的系统平台不一样,而其实这个区别对于开发环境的搭建其实影响不大,制作局部上的操作上发生了改 ...
随机推荐
- {转自MC}NVIDIA DirectX 11演示DEMO详解
http://tieba.baidu.com/p/1960826986 图形技术无论如何发展,最终都要落到实际的应用中才有效果.在个人电脑上,图形技术最大的用户除了显示UI和操作界面外,就是呈现美轮美 ...
- 实现Fragment 切换时不重新实例化
以前实现Fragment的切换都是用replace方法实现 public void startFragmentAdd(Fragment fragment) { FragmentManager frag ...
- 根据设备宽高动态设置View的大小
得到设备屏幕宽高: WindowManager wManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); ...
- 使用FROM确认按钮(键盘13号键)提交特性并使用ajax.POST提交.
如果又想使用FROM确认按钮(键盘13号键)提交特性 还能继续用AJAX.POST提交.就需要使用return false 来阻止FROM默认提交 代码如下: HTML页面 这里最关键就是用了ret ...
- spotlight监控工具使用
利用spotlight工具可以监控如下系统: 1.Spotlight on Unix 监控Linux服务器 1)安装 Spotlight on Unix 2)配置spotlight登陆用 ...
- OneDrive无法正常登录
可能是DNS被污染 手动设置DNS 134.170.108.26 onedrive.live.com134.170.108.152 skyapi.onedrive.live.com
- Spring IoC反转控制的快速入门
* 下载Spring最新开发包 * 复制Spring开发jar包到工程 * 理解IoC反转控制和DI依赖注入 * 编写Spring核心配置文件 * 在程序中读取Spring配置文件,通过Spring框 ...
- 【转】 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 ...
- volatile in thread
public class TestCalc { public static void main(String[] args) { class StoppableThread extends Threa ...
- ubuntu 制作deb 包
ubuntu下打包制作deb安装包 http://www.th7.cn/system/lin/201406/61012.shtml 2014-06-22 20:16:45CSDN-yangbing ...