'scope'에 해당하는 글 2건

servlet-api with Maven

Daily/Prog 2013. 5. 22. 22:45

Goals - tomcat:run
이클립스 내부 톰캣을 이용해 실행을 시킬 때 다음과 같은 내부 오류(HTTP Status 500)가 나타났습니다.

 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest"
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:268)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name "javax/servlet/http/HttpServletRequest"

 

servlet-api 가 이미 로딩이 되었다. 근데 또 로딩을 하는건 반칙이다. 이런건가...
<tomcat_home>/lib 에 하나, WEB-INF/lib 에 하나.
pom.xml 파일에서 scope의 기본값인 compile 을 런타임시에는 사용하지 않도록 provided 로 변경합니다.

 

<dependency>
     <groupId>servletapi</groupId>
     <artifactId>servlet-api</artifactId>
     <version>2.4</version>
     <scope>provided</scope>
</dependency>


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Central Repository

Tool/Maven 2013. 5. 9. 22:46

http://repo.maven.apache.org/maven2/
http://search.maven.org

 

 

maven에서 저장소는 세가지로 분류할 수 있습니다.
Central, Internal, Local repository

 

Central repository 는 중앙 저장소라고 하며, 이곳에 등록되어 있는 다양한 버전의 외부 OSS(오픈소스) 라이브러리들을 Maven에서 설정한 <dependency /> 에 지정하여 로컬 저장소에 가져올 수 있습니다. 중앙 저장소에는 개발자가 임의로 라이브러리를 배포할 수 없으니 외부 라이브러리를 가져오는 용도로만 사용한다고 보면 되겠습니다.

 

사용하고자 하는 외부 라이브러리를 중앙 저장소에 접속하여 검색하고 버전을 선택하면, Dependency Information 이 나타나므로 이것을 참조하여 pom 파일을 작성하면 되겠습니다. 의존 라이브러리들은 프로젝트 빌드시에 pom.xml 파일을 참조하여 로컬 저장소에 다운로드 됩니다.

 

 

pom.xml 파일에 의존 라이브러리(dependency) 추가

 

<project ...>

 

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

 

</project>

 

Dependency <scope />는 다양한 빌드 작업에 제한할 수 있습니다.

 

  • compile : default 값이며, 컴파일과 배포시에 필요한 라이브러리.
  • provided : 컴파일에만 필요한 라이브러리.
  • runtime : 어플리케이션을 실행할 때 필요한 라이브러리.
  • test : 테스트에만 필요한 라이브러리.
  • system : provided와 유사하지만 jar을 사용자가 제공해야 함.
  • import : <dependencyManagement /> 에 사용되며 지정된 POM 파일에 정의된 설정으로 교체됨.

WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,