티스토리 뷰

IDE/IntelliJ

Gradle Project 내 기본 설정

작은 거인 2017. 3. 23. 22:17

Gradle Project 기본 설정



서론

개발을 독학한지 3개월, 아직도 Maven이나 Gradle 같은 빌드 환경에 대해 누가 물어보면 대답을 할 수 없다. 어차피 둘다 잘 모르니까 시작을 Gradle로 해보려 많은 자료를 찾았지만, 자료 자체가 적고 내게 맞지 않는 자료들 밖에 보이지 않았다. 맨땅에 해딩 식으로 이클립스로 Maven 프로젝트를 만들어서 root-context.xml, servlet-context.xml, web.xml을 가져오고, 해외 유튜브 동영상을 보고 기본 레이아웃을 참고하여 나에게 맞는 환경으로 바꿨다. 어디 적지 않으면 또 찾을 것 같아서 Hello World 띄우자 마자 기록한다.


목표

간단히 Gradle 프로젝트를 작성하고 Hello World까지 출력


순서

1. Gradle 프로젝트 생성

2. build.gradle 작성.

3. HomeController 복사

4. root-context.xml 복사

5. servlet-context.xml 복사

6. web.xml 복사

7. Spring Facets 적용

8. log4j.xml 복사

9. home.jsp 복사

10. 프로젝트 구조



1. Gradle Project 생성








2. build.gradle 작성


group 'com.java'
version '1.0'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
mavenCentral()
}


configurations.all {
exclude module: 'commons-logging'
}

def version = [
spring: '4.3.7.RELEASE',
slf4j: '1.7.25'
]

dependencies {

providedCompile (
'javax.servlet:javax.servlet-api:3.1.0',
'javax.servlet.jsp:javax.servlet.jsp-api:2.3.1'
)

compile
"org.springframework:spring-jdbc:${version.spring}",
"org.springframework:spring-webmvc:${version.spring}",
"org.springframework:spring-test:${version.spring}",
"org.slf4j:slf4j-api:${version.slf4j}",
"org.slf4j:jcl-over-slf4j:${version.slf4j}",
"org.slf4j:slf4j-log4j12:${version.slf4j}"

compile(
'log4j:log4j:1.2.17',
'org.mybatis:mybatis:3.4.2',
'org.mybatis:mybatis-spring:1.3.1',
'org.aspectj:aspectjrt:1.6.10',
'javax.servlet:jstl:1.2',
'com.zaxxer:HikariCP:2.6.1',
'mysql:mysql-connector-java:6.0.6'
)

testCompile
'junit:junit:4.12'
}

war {
archiveName
'ROOT.war' // study(프로젝트명)/build/lib/ROOT.war
}


3. HomeController 복사


package com.java.study;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {

private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
logger.info("Welcome home! The client locale is {}.", locale);

Date date = new Date();
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);

String formattedDate = dateFormat.format(date);

model.addAttribute("serverTime", formattedDate );

return "home";
}

}



4. root-context.xml 복사


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">

<!-- Root Context: defines shared resources visible to all other web components -->


</beans>



5. servlet-context.xml 복사


<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
<resources mapping="/resources/**" location="/resources/" />

<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>

<context:component-scan base-package="com.java.study" />


</beans:beans>



6. web.xml 복사


>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>


7. Spring Facets 적용



web.xml을 복사하면 Framework가 발견되었다고 함. Configure 클릭


OK 클릭


Project Structure > Facets 에서 Spring이 적용된 것을 볼 수 있음. (생략)



8. log4j.xml 복사


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>

<!-- Application Loggers -->
<logger name="com.java.study">
<level value="info" />
</logger>

<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>

<logger name="org.springframework.beans">
<level value="info" />
</logger>

<logger name="org.springframework.context">
<level value="info" />
</logger>

<logger name="org.springframework.web">
<level value="info" />
</logger>

<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" />
</root>

</log4j:configuration>



9. home.jsp 복사


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
<title>Home</title>
</head>
<body>
<h1>
Hello world!
</h1>

<P> The time on the server is ${serverTime}. </P>
</body>
</html>



10. 디렉터리 구조 ( STS에서 Spring MVC project 작성시와 같음. )



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함