惭愧!时间过得真是快!
今天顺手打开了自己的博客,发现上一篇贴出来的日志是11.18号的,至今已经过去了五天时间! 着实惭愧!时间过得真是太快了,感觉每天就这么刷的一下过去,但是自己似乎有没有抓住什么东西,实在是惭愧。
想到之前一直信誓旦旦说要好好维护这个博客,作为自己的小家园,哎!很多事情就是这么不留心一眨眼就过去了,你以为你做的还好,真正看结果的时候傻了眼。
所以啊,贵在坚持!
总结一下这几天自己干了啥把。
1、上周末首先在忙着做无线通信原理课堂的ppt,目前觉得对于通信什么过滤器载波频谱的实在是太无感了,选了个OFDM雷达的课题,着实难做,到周一验收的时候自然不理想,同组的一名同学还出了那档子的事,不过也好,加深了我脱离通信理论的的决心,顶多完成毕业就好了。
2、周末还做了一件事,班级元旦节目的bgm制作。在室友猪笼的推荐下,接触到了cooledit这款音频软件,软件不打,可五脏俱全,上手极快,中午下载的软件,下午我就完成了bgm的制作,这也算是一点小收获把。
3、周一开始新的一周上课,对群里一个大神给出的爬取京东上热评最高的商品信息的程序感兴趣,项目放在github上面,这是我第一次通过github下载上面的项目自己运行。下下来之后傻了眼,本来以为就是放进IDE里面跑一下就可以了(这里又凸显了我的孤陋寡闻,着实和科班本专业的学生差距太大了),厚着脸皮去问大神怎么运行? 大神给我介绍了下Maven,自己去网上科普了一下这个,是一个项目管理工具。理解也很简单,当你在编写一个复杂的项目的时候,自然会调用到很多库,有些是自带的库,而有些是第三方的库,当你分享项目的时候他人在运行的时候自然不可能将jar包全部拷贝吧,项目做的大,相关联的jar包自然而然就很多,因此全部拷过去自然是不便利的。而maven做的就是自带一个配置文件,告诉你需要什么配置环境。具体的安装教程我会贴在后面。
4、安装好maven之后,进入cmd 使用mvn -version的时候又牵扯到环境变量的设置,我运行命令是一直报错 JAVA_HOME变量未找到。原来,java完成的配置好的时候是需要输入java、javac、java -version都可以运行,但是当我输入javac却报错不是内部命令也不是外部命令。
去百度找答案,大部分都是说环境变量设置有问题,我就对着网页,起码对自己的环境变量更改了20次,还是不行,还是报错。百思不得其解。 在这里,给一个建议,我最后是把环境变量的设置都改成了绝对路径(比如D:\java\jdk1.8\bin)而不是用之前的%JAVA-HOME%变量来代替。
5、周二的时候上课多,自己大部分都在啃那本java数据结构和算法,目前看到了listliterator接口部分,双11买来到现在,大概看到了40、50页把,不能急,慢慢来,我个人认为那本书绝对不会只看一遍。
附:转:http://suhuanzheng7784877.iteye.com/blog/1066917
1. 前言
Maven是apache的一个顶级项目,它的出现越来越影响着现在的众多的开源项目,不仅如此,很多公司的很多新项目都采用Maven提倡的方式进行管理。Maven正逐渐侵入我们原先的管理项目的习惯,对于团队的管理,项目的构建,都是一种质的飞跃。当然是我个人的一些项目经验而说的这话。如果原先的团队老大本身的管理非常科学,也有一套其他软件辅助项目的构建、打包、发布等等一系列机制保证。那么Maven可能对其并没有实质性的影响或者是质的飞跃。当然在此也并不是说咱们中国人做出来的项目就管理不善……只是说利用Maven帮助我们构建项目更科学、更有可维护性、更加模块化、模块功能更加职能单一、做出来的项目更加具有可复用性等等好处。当然笔者也是个刚学习Maven的人,我们一起来学习Maven到底为我们带来了什么好处。笔者邮箱已经给出,欢迎与笔者进行学术上的交流。
2. Maven的思想
本来想看完了实战整本,再写总结的,后来觉得还是先写出来吧。哪怕有什么不对的地方再纠正都不晚,就怕到时候看完了一点心得都没有,全忘了就太……所以先将学习的点点滴滴感受写下来,之后结合实例咱们可以反复的推敲。
目前笔者看到的Maven的主要功能是:项目构建;项目构建;项目依赖管理;软件项目持续集成;版本管理;项目的站点描述信息管理;
由此可以看出Maven最主要的体现在了哪2个词?——对了,“项目”和“管理”!加在一起就是项目管理。项目管理是一个很抽象的概念。项目管理既可以指技术上的管理手段,也可以指“以人为本”的非技术因素。诚然,无论是技术还是非技术,项目的成败最大的责任人其实就是项目经理。这里我们抛开人为因素不提,仅就技术上来说,Maven提供了一种思想让团队更科学的管理、构建项目。用配置文件的方式对项目的描述、名称、版本号、项目依赖等等信息进行描述。使之项目描述结构清晰,任何人接手的成本比较低。在项目构建时,利用Maven的“约定大于配置”的思想,可以比Ant脚本构建项目省去不少配置文件的内容。而且一个项目可能依赖于其他的项目和第三方的组件才能顺利完成,Maven提供了仓库的概念,让这些依赖项放进仓库中,项目想要从仓库中去取,其他项目组也需要,OK,从仓库中去取,不必每个人去开源项目的站点去苦苦搜寻了。如此人员的成本、软件维护的成本、沟通的成本、硬件的成本都降下来了。客户笑了、公司老板也笑了、项目经理笑了、团队里面的人员也笑了、Apache社区看到这么多人在用也笑了。给笔者的感觉,现在的开源东西越来越向“敏捷开发”、“极限编程”的方向靠拢。通过Maven辅助管理项目,更能发现项目中哪些模块是重复的轮子。
3. Maven的环境搭建
下面我们来看看Maven的环境搭建。首先从Apache网站下载Maven。下载url是:http://maven.apache.org/download.html。笔者下载的是Maven 3.0.3版本。下载下来的包结构如下
bin就不用说了,就是Maven的一些命令参数,boot里面是Maven自己的类加载器,咱们也不必理会。conf里面有个settings.xml就是本机Maven的总配置信息。lib是Maven运行时需要的类库。将bin目录和JDK的bin目录一样设置为系统的PATH。这样在命令行就能直接运行Maven指令了。
保持网络畅通,在命令行执行一条语句
Java代码
-
mvn help:system
会从网上下载很多东西,本地用户的临时文件夹,会生成一个临时Maven文件目录,用于存储本地资源仓库。比如在C:\Users\liuyan下面有个文件夹叫做.m2
将刚刚提到的settings.xml拷贝到C:\Users\liuyan\.m2下面,如此Maven就算在本机安装好了。
开发工具的选用,笔者使用的是Myeclipse8.6版本,此IDE已经集成了Maven插件Maven4Myeclipse,仅需要将总配置信息配置上即可。在Myeclipse点击window菜单,打开preferences选项。之后点击到myeclipse的maven4myeclipse节点,如下图所示。
4. Maven使用入门
首先我们先写一个非常简单的小项目(我们姑且称之为项目啊),项目结构如下图所示
src.main.java是项目代码文件夹、src.test.java是项目单元测试文件夹、src.main.resource是放置项目资源文件、配置文件文件夹。下面我们看项目代码
一个简单的类com.liuyan.maven.helloword.HelloWorld
Java代码
-
package com.liuyan.maven.helloword;
-
public class HelloWorld {
-
public String sayHello() {
-
return "hello maven";
-
}
-
/**
-
* @param args
-
*/
-
public static void main(String[] args) {
-
System.out.println(new HelloWorld().sayHello());
-
}
-
}
在此项目的根目录下有一个pom.xml文件,内容如下
Java代码
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
<modelVersion>4.0.0</modelVersion>
-
<groupId>com.liuyan.maven</groupId>
-
<artifactId>MavenDemo</artifactId>
-
<version>0.0.1-SNAPSHOT</version>
-
</project>
进入控制台,将当前目录cd到与pom.xml同级的文件夹下面。执行命令
Java代码
-
mvn clean compile
因为笔者写总结前之前下载了相关包,所以此时相关输出download包的信息少一些
Java代码
-
[INFO] Scanning for projects...
-
[INFO]
-
[INFO] ------------------------------------------------------------------------
-
[INFO] Building MavenDemo 0.0.1-SNAPSHOT
-
[INFO] ------------------------------------------------------------------------
-
[INFO]
-
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ MavenDemo ---
-
[INFO] Deleting E:\Genuitec\ws\MavenDemo\target
-
[INFO]
-
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ MavenDem
-
o ---
-
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e
-
. build is platform dependent!
-
[INFO] skip non existing resourceDirectory E:\Genuitec\ws\MavenDemo\src\main\res
-
ources
-
[INFO]
-
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ MavenDemo ---
-
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. buil
-
d is platform dependent!
-
[INFO] Compiling 1 source file to E:\Genuitec\ws\MavenDemo\target\classes
-
[INFO] ------------------------------------------------------------------------
-
[INFO] BUILD SUCCESS
-
[INFO] ------------------------------------------------------------------------
-
[INFO] Total time: 2.044s
-
[INFO] Finished at: Sat May 28 16:23:07 CST 2011
-
[INFO] Final Memory: 5M/15M
-
[INFO] ------------------------------------------------------------------------
执行后造成的结果。就是项目的根路径下出现了一个taget文件夹
里面就是编译后的class类。经理过来说,你需要进行单元测试才能发布出来给大家用。Ok,我们在源码包——src/test/java下面开始编写junit单元测试类。
单元测试代码如下
Java代码
-
package com.liuyan.maven.helloword;
-
import org.junit.Test;
-
import org.junit.Assert;
-
public class TestHelloWorld {
-
@Test
-
public void testSayHello() {
-
HelloWorld helloWorld = new HelloWorld();
-
Assert.assertEquals(helloWorld.sayHello(), "hello maven");
-
}
-
}
之后我们因为使用了junit单元测试,那么就是说我们这个项目依赖了它。修改一下pom.xml文件内容,如下
Java代码
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
<modelVersion>4.0.0</modelVersion>
-
<groupId>com.liuyan.maven</groupId>
-
<artifactId>MavenDemo</artifactId>
-
<version>0.0.1-SNAPSHOT</version>
-
<dependencies>
-
<dependency>
-
<groupId>junit</groupId>
-
<artifactId>junit</artifactId>
-
<version>4.7</version>
-
<scope>test</scope>
-
</dependency>
-
</dependencies>
-
</project>
进入命令行,执行命令
Java代码
-
mvn clean test
执行后观察一下taget文件夹如下图,多出了test-classes文件夹和另外2个咱们暂时不用去管的文件夹。
之后在观察一下本地的临时仓库C:\Users\liuyan\.m2\repository,会多出文件夹junit,下载的版本是4.7。
如果我们想把项目打成jar的形式输出出去呢?在项目根目录下执行
Java代码
-
mvn clean package
执行后效果如下
生成了一个jar包,至于SNAPSHOT是快照的意思,快照就是项目暂时还不稳定的意思。
打包测试后没问题了,想把此项目当做Maven的本地资源仓库,为其他的项目也能提供服务,可以这么做。
执行命令
Java代码
-
mvn clean install