본문 바로가기

👩‍💻 BackEnd/🍃 스프링부트 [SpringBoot]

[Springboot] Gradle 터미널에서 빌드

Last login: Tue Oct 17 23:34:02 on ttys000
 gangminhui@gangminhuiui-MacBookAir  ~   cd ~
 gangminhui@gangminhuiui-MacBookAir  ~  cd study
 gangminhui@gangminhuiui-MacBookAir  ~/study  ll
total 0
drwxr-xr-x@ 14 gangminhui  staff   448B 10 17 23:36 hello-spring
 gangminhui@gangminhuiui-MacBookAir  ~/study  cd hello-spring
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring  ll
total 56
-rw-r--r--@ 1 gangminhui  staff   1.4K 10 17 23:11 HELP.md
drwxr-xr-x@ 6 gangminhui  staff   192B 10 17 23:36 build
-rw-r--r--@ 1 gangminhui  staff   525B 10 17 23:36 build.gradle
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:11 gradle
-rwxr-xr-x@ 1 gangminhui  staff   8.4K 10 17 23:11 gradlew
-rw-r--r--@ 1 gangminhui  staff   2.8K 10 17 23:11 gradlew.bat
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:35 out
-rw-r--r--@ 1 gangminhui  staff    34B 10 17 23:11 settings.gradle
drwxr-xr-x@ 4 gangminhui  staff   128B 10 17 23:11 src
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring  ./gradlew build

Welcome to Gradle 8.3!

Here are the highlights of this release:
 - Faster Java compilation
 - Reduced memory usage
 - Support for running on Java 20

For more details see https://docs.gradle.org/8.3/release-notes.html


Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD SUCCESSFUL in 4s
7 actionable tasks: 7 executed
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring  cd build
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring/build  ll
total 8
-rw-r--r--@ 1 gangminhui  staff    40B 10 18 00:46 bootJarMainClassName
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:35 classes
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:36 generated
drwxr-xr-x@ 4 gangminhui  staff   128B 10 18 00:46 libs
drwxr-xr-x@ 3 gangminhui  staff    96B 10 18 00:46 reports
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:36 resources
drwxr-xr-x@ 3 gangminhui  staff    96B 10 18 00:46 test-results
drwxr-xr-x@ 7 gangminhui  staff   224B 10 18 00:46 tmp
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring/build  cd libs
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring/build/libs  ls -arlth
total 37640
-rw-r--r--@  1 gangminhui  staff    18M 10 18 00:46 hello-spring-0.0.1-SNAPSHOT.jar
drwxr-xr-x@  4 gangminhui  staff   128B 10 18 00:46 .
-rw-r--r--@  1 gangminhui  staff   2.6K 10 18 00:46 hello-spring-0.0.1-SNAPSHOT-plain.jar
drwxr-xr-x@ 10 gangminhui  staff   320B 10 18 00:46 ..
 gangminhui@gangminhuiui-MacBookAir  ~/study/hello-spring/build/libs  java -jar hello-spring-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.7.16)

2023-10-18 00:49:33.597  INFO 52665 --- [           main] h.hellospring.HelloSpringApplication     : Starting HelloSpringApplication using Java 11.0.20 on gangminhuiui-MacBookAir.local with PID 52665 (/Users/gangminhui/study/hello-spring/build/libs/hello-spring-0.0.1-SNAPSHOT.jar started by gangminhui in /Users/gangminhui/study/hello-spring/build/libs)
2023-10-18 00:49:33.599  INFO 52665 --- [           main] h.hellospring.HelloSpringApplication     : No active profile set, falling back to 1 default profile: "default"
2023-10-18 00:49:34.058  INFO 52665 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-10-18 00:49:34.065  INFO 52665 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-10-18 00:49:34.065  INFO 52665 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.80]
2023-10-18 00:49:34.107  INFO 52665 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-10-18 00:49:34.107  INFO 52665 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 483 ms
2023-10-18 00:49:34.221  INFO 52665 --- [           main] o.s.b.a.w.s.WelcomePageHandlerMapping    : Adding welcome page: class path resource [static/index.html]
2023-10-18 00:49:34.316  INFO 52665 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-10-18 00:49:34.323  INFO 52665 --- [           main] h.hellospring.HelloSpringApplication     : Started HelloSpringApplication in 0.944 seconds (JVM running for 1.178)
2023-10-18 00:49:45.936  INFO 52665 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-10-18 00:49:45.936  INFO 52665 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2023-10-18 00:49:45.937  INFO 52665 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms

서버에서 Spring 실행시키는 방법 

## 프로젝트 파일로 들어가기 
$ cd hello-spring

$ ll

## gradlew 파일 빌드 
$ ./gradlew build 
$ cd build
$ ll
$ cd libs 
$ ls -arlth

## jar 파일 빌드 
$ java -jar hello-spring-0.0.1-SNAPSHOT.jar

 

 clean을 할 경우 build폴더가 사라짐 

$ ./gradlew clean 

total 56
-rw-r--r--@ 1 gangminhui  staff   1.4K 10 17 23:11 HELP.md
-rw-r--r--@ 1 gangminhui  staff   525B 10 17 23:36 build.gradle
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:11 gradle
-rwxr-xr-x@ 1 gangminhui  staff   8.4K 10 17 23:11 gradlew
-rw-r--r--@ 1 gangminhui  staff   2.8K 10 17 23:11 gradlew.bat
drwxr-xr-x@ 3 gangminhui  staff    96B 10 17 23:35 out
-rw-r--r--@ 1 gangminhui  staff    34B 10 17 23:11 settings.gradle
drwxr-xr-x@ 4 gangminhui  staff   128B 10 17 23:11 src

스프링 웹 개발 기초 

  • 정적 컨텐츠 : 서버에서 파일을 그대로 웹브라우저에 내려주는 것
  • MVC와 템플릿 엔진 : 과거 JSP, PHP - html 을 서버에서 변형을 주어 동적으로 바꿔서 내려주는 것 
  • API : JSON이라는 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는 방식  

1. 정적 컨텐츠 : http://localhost:8080/hello-static.html

controller에서 해당 이름을 먼저 찾는다. 컨트롤러가 우선 순위를 가짐! 

그리고 없으면  resources:static/hello-static.html 찾음! 

 

 

2. MVC와 템플릿엔진 

    @GetMapping("hello-mvc")
    public String helloMvc (@RequestParam("name") String name, Model model){
        model.addAttribute("name", name);
        return "hello-template";

http://localhost:8080/hello-mvc?name=spring!

get방식으로 파라미터를 받아야 오류없이 페이지를 띄울 수 있음. 

값을 넘겨주기 위해서는 

GetMapping 주소 다음에 ?name 으로 파라미터를 적어줘야 한다. 

model에 값을 넣어 뷰에게 전달 

이렇게 넘겨진 String name 은 View파일에서 model에 들어있는 ${name}이라는 키 값으로 spring! 이라는 값을 꺼내 hello! empty!! 라는 글에 출력이 된다. 

<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name} ">hello! empty!!</p>
</body>
</html>

템플릿 엔진에서는 변환 후 넘겨준다! 

변환된 것을 어떻게 확인하는가? 

소스코드 보기를 하면 바뀌어있는 것을 확인할 수 있다. 


3. API 

@ResponseBody 

Body부분에 데이터를 직접 넣어주겠다. 

템플릿 엔진과 차이점! 

뷰가 없고 데이터가 그대로 넘어감. 

커맨드 + shift + enter -> 자동완성