IntelliJ IDEA Community 社区版配置 Web 开发环境(Gradle + Tomcat)

IntelliJ IDEA 是很好的 IDE, 但是免费的社区版不直接支持开发 Web 项目。所以需要自己配置。
网上大多是教程都是用 Maven 和 jetty 来配置。我刚学 JAVA。因此直接从 Gradle 上手配置了。

这里直接用写一个 Servlet 的 Helloworld,记录下踩过的坑,让后来的人少走弯路。
在这之前请自行安装 Gradle 并使其能全局运行。了解基本的 Gradle 的概念。本文默认读者会使用 Gradle。

下载安装 IntelliJ IDEA Community

https://www.jetbrains.com/idea/

新建项目

1.用 Gradle 新建项目
项目目录下,命令行运行

gradle init --type java-library

2.编辑 build.gradle
这是我的配置

/*
 * This build file was auto generated by running the Gradle 'init' task
 * by 'Yang' at '16-9-18 下午5:48' with Gradle 3.0
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at https://docs.gradle.org/3.0/userguide/tutorial_java_projects.html
 */

// Tomcat 需要
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "com.bmuschko:gradle-tomcat-plugin:2.2.3"
    }
}

// 要使用的插件,看名字应该知道什么作用
// Apply the java plugin to add support for Java
apply plugin: 'java'
apply plugin: 'idea'
apply plugin: 'war'
apply plugin: "com.bmuschko.tomcat"


// In this section you declare where to find the dependencies of your project
repositories {
    // Use 'jcenter' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    // jcenter()

    // maven 的仓库
    mavenCentral()
}

// In this section you declare the dependencies for your production and test code
dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.21'

    // 依赖 servlet
    compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile 'junit:junit:4.12'

    // 配置 Tomcat 插件
    def tomcatVersion = '8.0.27'
    tomcat   "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}",
            "org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}"
}

// Tomcat 配置
// Tomcat 配置tomcatRun.contextPath = 'testa/'
tomcatRunWar.contextPath = 'teats/'

3.运行命令
注意第一次使用 gradlew 命令,可能会很慢,但是配置 gradlew 仍然有必要。因为后面 idea 运行 Tomcat 会使用这个命令。
你可以在 gradle/wrapper/gradle-wrapper.properties 中配置一下使用本地文件加快速度。


配置离线工作也可加快速度

File > Settings > Build, Execution & Deployment > Compiler > Compiler
and de-select Configure on demand
The above still uses data but is faster, I was able to load images and maps. However, in addition, if >you want to be completely offline, you need to do the following:
File -> Settings ->Build, Execution,Deployment -> Build Tools -> Gradle ->
check Offline work

试试有没有配置成功

gradlew build # 编译项目
gradlew tasks # 查看任务

4.创建 idea 项目文件

gradlew idea

如果之后项目更新了依赖,可以运行下面的命令同步到 idea

gradlew cleanIdea

5.用 Idea 打开项目
直接用 idea 打开 ipr 文件
按 alt + 1 可以显示文件导航侧栏

配置调试环境

1.配置远程调试
进入运行配置界面


点击 + remote



写一个名字,其他直接默认就好。可以把第一行参数复制出来下一步使用,即:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

2.配置 Tomcat 运行
同上步骤,进入运行配置界面
点击 + Gradle


第一行根据自己项目填写 gradle build 的位置
第二行输入 tomcatRun
第三行填上一个步骤复制下来的参数。

编写 Helloworld

package main.java;

/*
 * This Java source file was auto generated by running 'gradle buildInit --type java-library'
 * by 'Yang' at '16-9-18 下午5:48' with Gradle 3.0
 *
 * @author Yang, @date 16-9-18 下午5:48
 */

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Writer;

@WebServlet("/")
public class Library  extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Writer writer = resp.getWriter();
        writer.write("HelloWorld!");
        writer.flush();
        writer.close();
        super.doGet(req, resp);
    }
}

运行调试

1.运行


P

这里注意 src/main 下面必须有 webapp 目录,空目录都要。不然访问会出现 404 错误


2.调试
选择之前配置的远程 debug 配置


打断点
重新访问查看调试结果


参考

1.http://yukinami.github.io/2015/07/29/gradle-tomcat-plugin-404/
2.http://www.cnblogs.com/woshimrf/p/5779811.html
3.http://stackoverflow.com/questions/18158034/how-to-setup-android-studio-to-work-completely-offline
4.http://www.cnblogs.com/huang0925/p/3458507.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,587评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,724评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,401评论 25 707
  • 柳梢头,黄昏后,孤魂影树花满地。草青黄,叶低扬,秋日已过,冬阳未来,落落落! 古道旁,河堤前,三杯白酒送别离。水波...
    菡萏花又开阅读 267评论 0 0
  • 昨天中午把头发剪了 这次剪头发的行为非常的随意 就是在前一天晚上 突然不想要长头发了 然后找妈妈要了钱 找了一个有...
    张妙天阅读 378评论 0 0