资讯专栏INFORMATION COLUMN

Maven踩过的坑

cgspine / 411人阅读

摘要:采用了一种被称之为概念来管理项目,所有的项目配置信息都被定义在一个叫做的文件中,通过该文件,可以管理项目的整个声明周期,包括编译,构建,测试,发布,报告等等。目前下绝大多数项目都已经采用进行管理。

前言:对于微软技术死忠的笔者来说,学习JAVA灵活又复杂的技术是件多么痛苦的事,开始想念我大微软简单的开发环境搭建以及完整详尽的开发文档,还有那一看就懂的案例教程了...
可是为了工作,依旧不得不继续潜心钻研JAVA技术,好在我同事xunhua是技术大神,笔者在其帮主下避过了不少弯路,笔者决定记录一系列在JAVA技术学习上遇到的问题,以备日后复用

先介绍下Maven:
Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制项目。
扩充:与Maven差不多齐名的以前还有个Anti,但Anti日渐势衰,现在大部分都开始转向Maven。
吐槽:不得不感叹一句,学JAVA是多么受虐的一件事,技术更新换代的速度太快,以至于需要不断不断地学习新的技术(几乎每半年冒出个很火的)。这是也当初笔者初学编程时选择微软体系的重要原因之一,.NET的技术更新虽然是每年1至2年一大更,但运用到实际到生产环节并不建议一直追着最新技术,保持一个版本的技术代沟,可以保证自己少踩一些坑,当然如果精力旺盛又想当大神的,可以一直追着技术潮流的第一浪不断学习...

步骤概览:
下载->配置环境->使用命令行创建工程->导入eclipse

1.下载

地址:http://maven.apache.org/download.html

笔者写作时使用的是:Apache Maven 3.3.9

下载完毕后将文件解压出来,可以看到以下文件

(记住你解压的路径地址下一个步骤需要)

2.配置环境

->!:配置Maven环境前需要安装JDK及配置JDK环境
JDK传送门:http://www.cnblogs.com/tiankong101/p/4226559.html (废话比较多)

->配置Maven环境
新增以下Windows**系统环境变量**
变量名:MAVEN_HOME  变量值: D:apache-maven-3.3.9 (maven解压出来的路径)
变量名:MAVEN       变量值: %MAVEN_HOME%in 
变量名:MAVEN_OPTS  变量值: -Xms256m -Xmx1024m    //(可选)该参数用于配置MAVEN可使用的内存
                                                 //Xms为允许最小内存,Xmx为允许最大内存 
                                                 //当使用MAVEN编译发生内存溢出错误时即需要提高此参数Xmx数值
                                                 
->在 path 变量最后加上 %MAVEN%;

->测试配置
    Win+R打开cmd命令工具,输入
    ->$mvn -version
    可查看到以下输出即表示配置成功

    (以上为借的图)
    

3.使用命令行创建工程

除了命令行创建工程之外还可以使用eclipse插件来创建项目,大神同事说搭建插件环境太复杂,使用cmd命令来创建较为简单,尝试了一下没成功也就放弃了,感兴趣的同学可以深入,但个人觉得cmd更为直观,前提是会cmd简单命令
->使用转到你想要将工程存放的文件路径
扩充: $cd 为转到命令,从一个盘的路径切到另一个盘的路径前,需要先切换盘符
比如C:Documents and Settings要切换到D:Programe Files
需要要->$D:
然后再->$cd D:Programe Files
!:使用连续两次tab键可以自动补足文件或文件夹全名

切换好路径后使用
->$mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
//该命令用于创建web项目
//{project-packaging}为打包名,笔者使用com.calx
//{project-name}为项目名,笔者使用maven-test
或使用
->$mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
//该命令用于创建QickStart项目

!:参考资料:(http://trinea.iteye.com/blog/1290898)

扩充:让maven下载其他依赖时使用代理
如果没有创建C:Usersxxx.m2文件夹则需要自行创建,xxx为你的windows用户名
在.m2文件夹下创建settings.xml文件
填入一下内容


    
        MyProxy                  //代理名
        true             //是否激活
        http         //代理协议
        xxx.xxx.xxx.xxx       //代理IP地址
        xxxx                 //代理端口
                     //代理登录帐号
                     //代理登录密码
        localost|
    

4.导入eclipse

在Package Explorer中邮件找到Import

在弹出的窗口内找到Maven->Existing Maven Projects

选择路径后点finish按钮即可完成

(以上为web项目截图)

5.常用命令
mvn clean 清除目标目录中的生成结果
mvn compile 编译源代码
mvn test-compile 编译测试代码
mvn test 运行应用程序中的单元测试
mvn package 依据项目生成 jar 文件
mvn install 在本地 Repository 中安装 jar

如之前文中提到的,maven可以帮你管理项目的整个生命周期,以上命令则对应了发布前你所
希望操作的周期,由于笔者没有深入了解过执行顺序,仅从install命令中可以简单看出,
maven的默认发布顺序大概为clean->compile->test->package,所以一般使用install即可

----------!

找到一篇较为详尽的教程
http://www.cnblogs.com/leiOOl...

----------!

以下为笔者遇到的问题

1.settings.xml的设置

.m2文件夹下的配置为当前用户配置,所以存放于xxx.m2文件夹下的settings.xml只对该xxx用户生效
可以手动编辑配置settings.xml(复制解压出来后的conf文件里的settings.xml模板自行修改)
也可以通过eclipse进行配置,eclipse配参考**详尽的教程**

2.不能创建src/main/java文件夹

提示为文件夹已存在(The folder is already a source folder.)
解决办法为在左侧列表中,src文件夹下main文件夹下创建java文件夹即可
创建完之后java文件夹在左侧列表中不可见,但会跑到上面以Source Folder形势出现
多半是Eclipse的bug吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66235.html

相关文章

  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    phpmatt 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    shiina 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    bang590 评论0 收藏0
  • 使用node子进程spawn,exec踩过的坑

    摘要:最后发现使用子进程打开还真的就是使用到一定程度就挂掉。上面的简单流程就是启动一个子进程。逻辑就是,记录子进程的大小,一旦超过就掉子进程。我们在使用时,不知道设置,默认的是当我们子进程日志达到时,自动掉了。 showImg(https://segmentfault.com/img/bVrCnh); 如何在项目中实现热更新中提到的一个坑child_process的exec使用问题,下面文章...

    cppprimer 评论0 收藏0
  • 那些年踩过的坑——h5页面在ios端点击高亮闪烁

    摘要:当时碰到过一个问题,页面在端点击的时候,整个页面会高亮的闪烁一下特别明显,被测试狂崔。。。当透明度设为,则会禁用此属性当透明度设为,元素在点击时不可见。 记得那是第一次独自完成一个项目,现在看来,那个项目会很简单的,但那个时候还是挺有成就感的。 当时碰到过一个问题,h5页面在ios端点击的时候,整个页面会高亮的闪烁一下,特别明显,被测试狂崔。。。最后发现是 css样式的问题 加...

    姘搁『 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<