首先说下环境
我用的ECLIPSE:: Mars.2 Release (4.5.2)
我现在用的JDK 1.7 ,这也是我准备用于项目的JDK版本
我在网上下的apache-maven-3.5.0
首先,应该先配置maven的配置(文件),在maven的根目录的conf文件夹下面,有一个settings.xml的文件,讲几个主要的节点
<mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror> <mirror> <id>net-cn</id> <mirrorOf>central</mirrorOf> <name>Nexus net</name> <url>http://maven.net.cn/content/groups/public/</url> </mirror>
这是配置库镜像,因为maven的官方库在国外,我们就用阿里云的,不然下载很慢
<profiles> <profile> <id>custom-compiler</id> <properties> <JAVA8_HOME>:/usr/lib/jvm/java-7-oracle</JAVA8_HOME> </properties> </profile> <profile> <id>jdk-1.7</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> <repositories> <repository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>local private nexus</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile>
这是主要是配置创建maven工程时,工程默认用的jdk的版本及库位置
<activeProfiles> <activeProfile>nexus</activeProfile> <activeProfile>custom-compiler</activeProfile> </activeProfiles>
至此,maven的配置就可以了。然后再来配置eclipse。
第一步,调整eclipse所用的maven
由于某些原因,创建后有些目录将不会创建或者不显示,特别是resources目录
第二步,把刚刚我们配置的xml文件的配置刷新到eclipse中来,找到User Settings,定位到相关文件,然后Update Setting,然后,搞自己的库地址,Local Repository,想放哪里放哪时吧。
这样之后就可以创建maven工程了,有些要注意的事项就是,对于父工程,新建的时候类型选maven-archetype-quickstart,Group Id,即公司组织名,Artifact Id,即项目名。Package可以先删除不填。
父工程创建好以后,做几个事情
1、在properties->Resource中把编码调整为UTF8
2、由于某些原因,创建后有些目录将不会创建或者不显示,特别是resources目录,请做如下操作
3、将父工程的打包属性调整为POM
然后就可以在父工程中创建module了,需要注意的是,无论创建多少个子工程,都应该把刚刚的创建的父工程作为父工程(是不是废话,哈哈),另外,如果是创建普通的jar项目的话,
新建的时候类型选maven-archetype-quickstart,如果是web项目的话,新建的时候类型选maven-archetype-webapp,另外,创建完后以后,由于某些原因,创建后有些目录将不会创建或者不显示,特别是resources目录,请在创建的新的项目中重复上述的第2步操作。
然后,讲一下项目之类打包的注意细节
我现在的项目是spring-mvc,mybatis,spring项目,我按照http://juvenshun.iteye.com/blog/305865这篇文章,把services划分到一个层,这里面放dao,entity,mapper.xml等,其完整的pom.xml如下:
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.baidu</groupId> <artifactId>ybh-parent-01</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.xiangyugame</groupId> <artifactId>ybh-service-01</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ybh-service-01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.3</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>MysqL</groupId> <artifactId>MysqL-connector-java</artifactId> <version>5.1.19</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>com/accp/mappers/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project>
其中后最后配置是的打包必须把*.xml打进去的
然后, 这个子模块的整个目录如下:
然后,最好先写一下测试这个子模块,src/test/java这个文件件下的AppTest.java就是放测试代理的地方
import static org.junit.Assert.*; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.sqlSession; import org.apache.ibatis.session.sqlSessionFactory; import org.apache.ibatis.session.sqlSessionFactoryBuilder; import org.junit.Test; import com.accp.dao.UserDAO; import com.accp.entity.User; public class AppTest { @Test public void kkk() throws IOException{ InputStream inputStream = Resources.getResourceAsStream("mybatis.xml"); sqlSessionFactory sessionFactory = new sqlSessionFactoryBuilder().build(inputStream); sqlSession session = sessionFactory.openSession(); UserDAO userDAO = session.getMapper(UserDAO.class); User user = userDAO.find("o0-nWs46Vnoiy3w7Fyh1PmFxD6sg"); // assertTrue("true",user.equals("")); System.out.println(user); } }
然后在子模块上面右击,Run As->Maven test即可测试。
对于子web模块,其整个pom.xm如下:
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.baidu</groupId> <artifactId>ybh-parent-01</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>com.xiangyugame</groupId> <artifactId>ybh-web-admin-01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>ybh-web-admin-01 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.xiangyugame</groupId> <artifactId>ybh-service-01</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>3.0-alpha-1</version> </dependency> <dependency> <groupId>ws-commons-util</groupId> <artifactId>ws-commons-util</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-validator</groupId> <artifactId>commons-validator</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>javax.annotation</groupId> <artifactId>jsr250-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.6.RELEASE</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>ybh-web-admin-01</finalName> </build> </project>
目录结构如下: