IntelliJ IDEA 与 Gradle + Spring项目的初次尝试
2015-10-02 20:11
537 查看
Myeclipse的臃肿,各种莫名其妙的refresh可解决的bug,以及迟滞的插件更新,最终促使我走向idea。
最近也在尝试着使用Gradle来构建项目(Maven依赖太过臃肿),所以本篇也是Gradle配合web框架的初次整合使用,顺便:idea下的Gradle比Myeclipse的方便太多了!
准备工作:1.安装好IntelliJ IDEA和Gradle 2.Groovy的基本语法(方便写gradle配置)
新建一个Gradle项目,如下图
填写项目信息包括groupId(项目包名),artifactId(项目名称)。然后配置Gradle
其中第二项最好勾选上,它能帮你自动创建好相应目录结构。
选择Use local gradle wrapper 指向本地gradle安装目录,默认是Use default gradle wrapper。如果报错说目录错误(遇到过),那么可先选择Use default gradle wrapper,创建好项目之后Setting->Gradle可以再改。
以下是主要的目录结构,需要注意的是/src/main/webapp即是原web项目的WebRoot目录,所以WEB-INF也在/webapp下。
Spring和Hibernate的配置文件放在/src/main/resources下即可,调用时直接classpath:/applicationConfig.xml
*idea新建Gradle项目后,缺少的目录可手动创建。默认web.xml没有创建的话,可以配置生成一个
File->Project Structure->左侧Project Setting->Facets->中部Web->右侧Deployment Descriptors->Add->.../webapp/WEB-INF/web.xml。
Eclipse普通web project与Gradle web project比较直观的区别有两个,一个是Gradle下的web目录是/webapp,另一个即是Gradle最重要的文件build.gradle。前者已介绍过,那么接下来就是最关键的build.gradle配置环节。
下面先介绍几个关键的地方,便于理解build.gradle
关于服务器:使用Myeclipse时我们最常用的服务器是Tomcat,而在Gradle中我们可以使用便捷的嵌入式服务器jetty,当然Maven也可以用。jetty由于版本兼容问题,Gradle在使用时要用Gradle的gretty插件,gretty插件可以设置runtime服务器为jetty亦或嵌入式tomcat。
关于maven库:Gradle也可以使用maven库,只需要填写maven库的地址即可。这里我推荐两个,开源中国和mvnrepository。
以上两个链接是用于搜索jar的url,下面是maven库的url。
开源中国:http://maven.oschina.net/content/groups/public/
mvnrepository:http://central.maven.org/maven2/
下面附上能正常运行的build.gradle,注释已详细写出。
配置好build.gradle之后,打开Gradle面板点击左侧的刷新按钮Refresh all Gradle projects,看下方进度等jar都下载好了之后查看Gradle面板里的dependencies里面的依赖是否齐全,以及查看gretty插件是否安装成功。
一切完成之后,打开右侧Gradle面板,双击gretty下面的appStart来运行web项目。
至此,一个基于IDEA开发Gradle构建的web项目就搭建好了。
大费一番周折之后,我的第一个Gradle项目终于能顺利运行了,最主要还是build.gradle,搞定它就搞定了Gradle。
而SpringMVC+HIbernate+Spring等框架的整合也与Gradle没什么关联,只要把jar依赖配置好,其他的照搬过来即可。
因为之前并没有用过Maven,所以是很辛苦地对着原项目中的jar一个个对照着手写的compile语句。当然了,也得是去maven库中搜寻原jar的maven坐标,开源中国的速度挺快但是有不少遗漏,复制坐标的时候一定注意,因为有的目录仅有.pom而没有jar。
如果想知道某个jar包的版本号的话,这里分享一个小技巧:打开jar包查看里面文件的最后修改时间,并记录下jar的MD5,然后去maven库查询此jar的各个发行版本,找离之前记录下的最后修改时间最近的一个版本,再查看此版本jar包的MD5,与之比对。(注:我使用的aspectjtools就遇到了非原版本不可的问题,使用这个方法最终找到了版本号1.6.11)。
最后,因写博文经验很少,有遗漏或错误之处欢迎大家指正。
最近也在尝试着使用Gradle来构建项目(Maven依赖太过臃肿),所以本篇也是Gradle配合web框架的初次整合使用,顺便:idea下的Gradle比Myeclipse的方便太多了!
准备工作:1.安装好IntelliJ IDEA和Gradle 2.Groovy的基本语法(方便写gradle配置)
新建一个Gradle项目,如下图
填写项目信息包括groupId(项目包名),artifactId(项目名称)。然后配置Gradle
其中第二项最好勾选上,它能帮你自动创建好相应目录结构。
选择Use local gradle wrapper 指向本地gradle安装目录,默认是Use default gradle wrapper。如果报错说目录错误(遇到过),那么可先选择Use default gradle wrapper,创建好项目之后Setting->Gradle可以再改。
以下是主要的目录结构,需要注意的是/src/main/webapp即是原web项目的WebRoot目录,所以WEB-INF也在/webapp下。
Spring和Hibernate的配置文件放在/src/main/resources下即可,调用时直接classpath:/applicationConfig.xml
*idea新建Gradle项目后,缺少的目录可手动创建。默认web.xml没有创建的话,可以配置生成一个
File->Project Structure->左侧Project Setting->Facets->中部Web->右侧Deployment Descriptors->Add->.../webapp/WEB-INF/web.xml。
Eclipse普通web project与Gradle web project比较直观的区别有两个,一个是Gradle下的web目录是/webapp,另一个即是Gradle最重要的文件build.gradle。前者已介绍过,那么接下来就是最关键的build.gradle配置环节。
下面先介绍几个关键的地方,便于理解build.gradle
关于服务器:使用Myeclipse时我们最常用的服务器是Tomcat,而在Gradle中我们可以使用便捷的嵌入式服务器jetty,当然Maven也可以用。jetty由于版本兼容问题,Gradle在使用时要用Gradle的gretty插件,gretty插件可以设置runtime服务器为jetty亦或嵌入式tomcat。
关于maven库:Gradle也可以使用maven库,只需要填写maven库的地址即可。这里我推荐两个,开源中国和mvnrepository。
以上两个链接是用于搜索jar的url,下面是maven库的url。
开源中国:http://maven.oschina.net/content/groups/public/
mvnrepository:http://central.maven.org/maven2/
下面附上能正常运行的build.gradle,注释已详细写出。
group 'your package' version '1.0-SNAPSHOT' // 应用Gradle各插件 apply plugin: 'java' apply plugin: 'war' // war包生产插件 apply plugin: 'idea' apply plugin: 'org.akhikhl.gretty' // 应用gretty插件 version = "" // 项目版本 //Gretty Embedded Jetty buildscript { repositories { jcenter() } dependencies { classpath 'org.akhikhl.gretty:gretty:+' } } // 指定JDK版本 sourceCompatibility = 1.8 targetCompatibility = 1.8 ext { jvmVersion = "1.8" springVersion = "4.0.6.RELEASE" sl4jVersion = "1.7.6" } repositories { // maven库 def cn = "http://maven.oschina.net/content/groups/public/" def abroad = "http://central.maven.org/maven2/" // 先从url中下载jar若没有找到,则在artifactUrls中寻找 maven { url cn artifactUrls abroad } } [compileJava, compileTestJava, javadoc]*.options*.encoding = "UTF-8" dependencies { def springVersion = "4.0.6.RELEASE" def hibernateVer = "4.3.6.Final" // providedCompile在编译时提供,不会写入war providedCompile( "javax.servlet:javax.servlet-api:3.1.0", "javax.servlet.jsp:jsp-api:2.2.1-b03" ) // 引入项目中/libs中的jar compile files( 'libs/spring-framework-bom-4.0.6.RELEASE.jar') compile("org.apache.taglibs:taglibs-standard-impl:1.2.1") // aspectjtools-1.6.11是测可试用版本,使用其他版本会报"dataSource无法注入"的Exception compile("javax:javaee-api:7.0", "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1", "org.aspectj:aspectjtools:1.6.11", "antlr:antlr:2.7.7", "org.aspectj:aspectjrt:1.6.11", "org.aspectj:aspectjmatcher:1.6.11") compile("org.apache.commons:com.springsource.org.apache.commons.fileupload:1.2.1", "commons-codec:commons-codec:1.6", "commons-collections:commons-collections:3.2.1", "commons-lang:commons-lang:2.6", "commons-logging:commons-logging:1.2", "commons-pool:commons-pool:1.5.5", "org.apache.commons:commons-lang3:3.1") // 数据库连接部分依赖 compile("mysql:mysql-connector-java:5.1.36") compile("com.mchange:mchange-commons-java:0.2.3.4", "redis.clients:jedis:2.0.0", "net.sf.ehcache:ehcache-core:2.4.3") compile("org.hibernate:hibernate-c3p0:$hibernateVer", "org.hibernate:hibernate-core:$hibernateVer", "org.hibernate:hibernate-entitymanager:$hibernateVer", "org.hibernate:hibernate-ehcache:$hibernateVer", "org.hibernate.common:hibernate-commons-annotations:4.0.5.Final") // Spring4.0.6依赖 compile("org.springframework:spring-aop:$springVersion", "org.springframework:spring-orm:$springVersion", "org.springframework:spring-jdbc:$springVersion", "org.springframework:spring-instrument-tomcat:$springVersion", "org.springframework:spring-instrument:$springVersion", "org.springframework:spring-framework-bom:$springVersion", "org.springframework:spring-expression:$springVersion", "org.springframework:spring-core:$springVersion", "org.springframework:spring-context-support:$springVersion", "org.springframework:spring-context:$springVersion", "org.springframework:spring-beans:$springVersion", "org.springframework:spring-aspects:$springVersion", "org.springframework:spring-test:$springVersion", "org.springframework:spring-tx:$springVersion", "org.springframework:spring-web:$springVersion", "org.springframework:spring-webmvc:$springVersion", "org.springframework:spring-webmvc-portlet:$springVersion") // json相关依赖 compile("com.alibaba:fastjson:1.2.7", "com.jayway.jsonpath:json-path:0.8.1", "net.minidev:json-smart:1.1.1", "org.jsoup:jsoup:1.7.2") compile("org.codehaus.jackson:jackson-core-asl:1.9.2","org.codehaus.jackson:jackson-mapper-asl:1.9.2") compile("org.dom4j:com.springsource.org.dom4j:1.6.1") compile("com.google.guava:guava:17.0") // 测试编译时的依赖 testCompile("org.assertj:assertj-core:1.5.0", "org.hamcrest:hamcrest-core:1.3", "junit:junit:4.11") } // gretty相关配置 gretty { port = 8080 contextPath = "/${project.name}" servletContainer = 'jetty9' // or tomcat7 } // 部署war到tomcat的Task task deploy (dependsOn: war){ copy { from "build/libs" into "F:/software/tomcat7/webapps" // 换成你的tomcat目录 include "*.war" } }
配置好build.gradle之后,打开Gradle面板点击左侧的刷新按钮Refresh all Gradle projects,看下方进度等jar都下载好了之后查看Gradle面板里的dependencies里面的依赖是否齐全,以及查看gretty插件是否安装成功。
一切完成之后,打开右侧Gradle面板,双击gretty下面的appStart来运行web项目。
至此,一个基于IDEA开发Gradle构建的web项目就搭建好了。
大费一番周折之后,我的第一个Gradle项目终于能顺利运行了,最主要还是build.gradle,搞定它就搞定了Gradle。
而SpringMVC+HIbernate+Spring等框架的整合也与Gradle没什么关联,只要把jar依赖配置好,其他的照搬过来即可。
因为之前并没有用过Maven,所以是很辛苦地对着原项目中的jar一个个对照着手写的compile语句。当然了,也得是去maven库中搜寻原jar的maven坐标,开源中国的速度挺快但是有不少遗漏,复制坐标的时候一定注意,因为有的目录仅有.pom而没有jar。
如果想知道某个jar包的版本号的话,这里分享一个小技巧:打开jar包查看里面文件的最后修改时间,并记录下jar的MD5,然后去maven库查询此jar的各个发行版本,找离之前记录下的最后修改时间最近的一个版本,再查看此版本jar包的MD5,与之比对。(注:我使用的aspectjtools就遇到了非原版本不可的问题,使用这个方法最终找到了版本号1.6.11)。
最后,因写博文经验很少,有遗漏或错误之处欢迎大家指正。
相关文章推荐
- JavaAPI_4
- 学习日志---treemap
- java自定义类加载器
- Java中equals方法与==和hashCode的区别
- JDK,JRE,JVM区别与联系
- java字符串与整数之间的互相转换
- PHP与Spring之间的强势接口设计:学习案例
- java类加载机制
- [Sqlite]-->Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作
- JAVA的文件操作
- JAVA的IO处理
- java的集合类
- PHP与Spring之间的强势接口设计:学习案例
- java 的SYSTEM类
- JAVA编程规则【转自java编程思想】
- maven3常用命令、java项目搭建、web项目搭建详细图解
- 深入浅出 Java Concurrency : 并发容器ConcurrentMap
- java实现线性链表结构
- java Unicode与中文互换
- 类和对象浅谈(1)