2020년 5월 3일 일요일

이클립스에서 Spring 웹 프로젝트 생성

Spring 웹 프로젝트 생성

Package Explorer 창에서 오른클릭 > New > Other... > Spring > Spring Project > Next > Spring MVC Project >
Project name 작성 > Next > 사용할 패키지명 작성 > Finish


서버에 추가

Servers 창에서 오른클릭 > Add and Remove... > 해당 프로젝트 선택 및 Add > Finish


문제)

프로젝트 생성 후 Package Explorer에 오류 마크가 보였고
Run As > Maven install : 실행시 아래와 같은 오류가 발생하였다
내용을 살펴보면 라이브러리 파일을 다운로드 받던 도중 오류가 발생하고 있다.
다른 것 보다 주의 깊게 살펴봐야 할 부분은 "Error code 501, HTTPS Required" 부분이었다.

[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building spring_map3d 1.0.0-BUILD-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/springframework/spring-context/3.1.1.RELEASE/spring-context-3.1.1.RELEASE.pom
[INFO] Downloading: http://repo.maven.apache.org/maven2/org/springframework/spring-webmvc/3.1.1.RELEASE/spring-webmvc-3.1.1.RELEASE.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.902 s
[INFO] Finished at: 2020-04-07T14:36:39+09:00
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project postmedia: Could not resolve dependencies for project kr.co:postmedia:war:1.0.0-BUILD-SNAPSHOT: Failed to collect dependencies at org.springframework:spring-context:jar:3.1.1.RELEASE: Failed to read artifact descriptor for org.springframework:spring-context:jar:3.1.1.RELEASE: Could not transfer artifact org.springframework:spring-context:pom:3.1.1.RELEASE from/to mvn2 (http://repo.maven.apache.org/maven2): Failed to transfer http://repo.maven.apache.org/maven2/org/springframework/spring-context/3.1.1.RELEASE/spring-context-3.1.1.RELEASE.pom. Error code 501, HTTPS Required -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

해결)

해당 오류에 대응되는 해결책은 repository로 걸려있는 도메인의 프로토콜을 https로 변경하는 것이었다.

pom.xml
<repositories>
    <repository>
        <id>mvn2</id>
        <!--<url>http://repo.maven.apache.org/maven2</url>-->
        <url>https://repo.maven.apache.org/maven2</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

메이븐 인스톨

다시 메이븐 인스톨하면 정상적인 처리가 완료된다.
Run As > Maven install

이후 샘플로 만들어진 페이지를 띄우기 위해 서버 구동 후 페이지를 띄우면 아래처럼 오류가 발생했다.
접속주소 http://localhost:8080/test/

org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/test/] in DispatcherServlet with name 'appServlet'

server.xml 설정

server.xml 설정을 수정하였다.
/test 를 /test/ 로 수정하였다.

<Context docBase="spring_map3d" path="/test/" reloadable="false" source="org.eclipse.jst.jee.server:spring_map3d"/>

web.xml 설정

web.xml 설정을 추가하였다.
이제 원하던 페이지가 잘 나온다.

<welcome-file-list>
 <welcome-file>/</welcome-file>
</welcome-file-list>