写在前面:
由于最近要从Myeclipse中将一个项目转到Intellij idea,但是我没有进行直接导入eclipse项目,我就想重新建一个java WEB项目,并利用Maven进行管理,正好重新认识一下Intellij 。如果想将项目直接从eclipse导入到Intellij,可以直接搜索如何导入网上有很多教程。
当然我这篇文章不会把每个步骤都详细的列出来,比如一步一步点击和截图,但是我会强调容易出错的地方,而且会贴出详细步骤的链接。我要说的是大方向上的创建以及创建中遇到的坑,自己找出解决方法的步骤。也是方便自己后续使用。
1)用Maven创建工程,只需2分钟,多了剁手
新建Maven
新建Project,“在Intellij中Project相当于eclipse中的Workspace,而Module相当于eclipse中的project。”相信这句话在很多地方都有看到过,但是我感觉这句话挺误导人的,因为我觉得没这个必要。就直接新建一个Project,他就是一个Project,不用再去新建Module,因为一般用一个Intellij建的项目就一个程序,除非你是很大的项目,当然可能我是新手还没遇到。像Android Studio中一个Project中就一个APP新建的Module不过是存放一些文件。
OK新建Project,选择Maven,然后这里很重要的一点
不要选creat from archetype,把这个取消
,因为这个是构建Maven项目骨架,而这个骨架就是你自己创建几个文件夹2分钟就能搞定,如果你勾选了则他要通过网上下载骨架,而他这个网速没有半个小时你是搞不定的,可能网上教程有说什么修改archetype=internal啊,我试过,根本没用,还是要等很久。
取消这个进行下一步输入项目名称创建好了。
然后到这里你会发现下面有一个在跑的downloading maven plugins这个东西很气人一直在跑。
使用自己的Maven版本
其实他根本就是连不上网,所以一直卡在那。我在网上搜了一下,没有相关资料,可能别人没遇到过所以我就想,应该是maven自身版本的问题,因为Intellij自己有Maven插件,那他的插件肯定不是最新版本。那我不用他Maven,我们去Maven官网下载最新版然后安装到本机,配置一下Maven环境变量,这个相当快,你直接下载解压包,具体教程Maven环境变量配置。很详细。然后我们把Intellij中找到,File->settings->Build,Execution ->Build TOOLS ->Maven ->Maven home directory这里就是Maven插件,我们换成自己新安装的最新版。这里就设置完成了,刷新一下,右键项目,Maven->reimport,应该成功了,没有downloading了,如果还有就stop download重新reimport,如果暂停不了就关了项目重新打开一下intellij。反正肯定好使。
生成javaweb骨架
然后File->Add Framework Support,添加Web Service ,也就是java WEB骨架基本该有的都有,可以根据自己需要自己添加。
这里生成之后我把我的项目结构贴出来:
maven的作用
这里Maven就创建完成了,Maven的作用我理解的就是你可以在他的POM.XML文件下添加任何你想要添加的功能,他会自动下载并整合到Library,这样你在转移项目的时候也会很方便,因为只要配置Maven下的pom.xml文件
这里我把我的pom.xml文件给出,也就是要引入的一些常用的包,可以根据需要添加与删除。
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tcb.appservice</groupId>
<artifactId>web-ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<!-- 编码格式 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- spring版本号 -->
<spring.version>4.1.6.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.3.0</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.7</slf4j.version>
<log4j.version>1.2.17</log4j.version>
</properties>
<dependencies>
<!-- 添加junit4依赖 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- JSTL依赖标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mybatis配置 -->
<!-- mybatis核心包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis/spring包整合依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!-- 引入apache mina jar包 -->
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.13</version>
</dependency>
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<!-- apache poi jar包导入 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- 格式化对象,方便输出日志 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- log end -->
<!-- 映入JSON -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<!-- 上传组件包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
<build>
<defaultGoal>clean</defaultGoal>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<warSourceDirectory>${basedir}/web</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<!--配置Maven 对resource文件 过滤 注意:一定要配置这个,否则会出现target里面没有mapper.xml文件-->
<resources>
<resource>
<directory>src/resources</directory>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
就可以了,什么SSM框架SSH框架都自动给你配好。当然Maven还有很多强大功能,具体我也没用过,不过非常推荐看《Maven实战》中国人写的书,挺适合入门者的,我看了几章我感觉用的到的,比如说pom.xml文件的注解含义。书没全部都看完,因为会用就行,后面章节深入讲解库还有做Maven里面插件的,这个对于我们使用者没什么太大影响。
2)架构SSM的配置
我的项目因为比较简单,所以没有涉及到SpringMVC,只配置了Spring-mybatis。
如果想配置SSM的项目可以去搜一下,有很多创建项目的模板和教程,这里我就不细说了。可能以后我再学习一下当把项目改成SSM框架的时候这里,再来详细说一下。
web.xml这个文件比较重要,去搜一下相应的语法结构弄懂然后进行自己的配置。
spring-mybatis.xml会出现一个配置选项,需要配置一下。我理解的也就是spring 和配置文件连接。
此时会配置相应的jdbc.properties文件属性。这里需要了解语句的作用。
所以主要就是配置上面这两个文件,配置好之后基本就没什么问题,如果有就看LOG报什么错找错就行。
log4j.properties这个文件好配置,不用过多纠结,Intellij自己有问题,提示unused properties不用管他,直接引入log4j的包然后把log4j文件拷入就行了。
3) 关于Tomcat部署的配置:
配置tomcat前需要了解的功能
配置TOMCAT,这个网上教程一搜一大堆,当然我推荐一个JAVA WEB项目创建 这个作者写的步骤相当详细,而且每个功能都有他的理解说明,很细心的作者。最好从头到尾详细看完,然后会了解其中的很多功能。当然这里我们需要做的是按照他的第三部tomcat的配置,因为前两部的配置我们通过Maven已经完成不需要他那么复杂的步骤。一定看一下方便intellij工具各个功能配置的理解。
配置tomcat
这里我觉得我还是研究的挺透彻的,结合了网上不同的教程以及自己的实践操作,已经把tomcat配置弄懂了。
首先看ProjectStructure中的Modules这里默认的output path 是target目录,这里用默认的就行,因为这时compile outpath。仅仅是编译输出路径。我们不用管他,我要提这里一句主要是跟后面的tomcat输出路径进行区别。然后看Artifacts这里的设置其实就是关联tomcat的设置了,首先添加,Web Application exploded->from modules。一定要添加这个,这个是tomcat运行的基础。添加完这个之后,我们会看到他的output 路径是out包,也就是tomcat的输出路径。添加完之后OK完成,然后进行tomcat editconfiguration的配置,添加tomcat server->local直接添加,tomcat名字起不起也无所谓,重要的是配置deployment选项卡,下面的,点添加,可以添加exploded,这里后面的Application context/后面的就是访问路径,就是你在浏览器输入xxx:8080/aabbcc 这里的aabbcc就是你要添加的访问路径。默认为空,也就是你直接起tomcat的8080端口就能访问,但是如果tomcat服务器下有多个程序,则需要在这里进行一个指定名称访问哪个程序。到此,tomcat服务器就可以启动了,运行一下可以成功,没有问题。
生成war包呢
Intellij不像Eclipse有直接导出war包的功能。那么这里就需要再次设置project structure->Artifact->添加web application Archive存档->for exploded添加成功后就可以看到war包生成,这里有个build on make 看网上说可以勾上。这次重新启动tomcat服务器就可以在out 文件夹里自动生成war包了,如果要用war包直接拖出来用。