2012-02-14 2 views
2

를 사용하는 올바른 방법 : , 내가 여기에이 문제를 가지고 받는다는하는 나는 새로운 해요 받는다는

1

는 어떻게 유물 문제 누락 해결하기 위해?

jcharts-0.7.5가 필요하지만 Maven Central Repository에서는 사용할 수 없습니다. jar 파일이 있지만, maven 프로젝트에 넣기가 쉽지 않습니다.

2, 유물의 잘못된 종속 범위를 수정하는 방법은 무엇입니까?

은 내가 WAR 프로젝트는 그래서 '컴파일'('제공'의 실수)의 범위와 서블릿 API 2.3에 따라되는 유물, 축 커널에 서블릿-API- mvn install 패킷을 따라가 2.3.jar 파일을 war 파일에 저장하고 "validateJarFile (...) - jar가로드되지 않습니다." 톰캣 7

+1

향후 재사용을 위해 게시물 당 하나의 질문에 충실하십시오 .. 첫 번째 질문은 이미 여기에서 답변되었습니다 : http://stackoverflow.com/questions/4919256/add-compiled-java-class -to-a-maven-project/5563614 # 5563614 – Tim

답변

1

에서 오류가 두 번째 질문에 대답하려면 : http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

<project> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>org.apache.axis2</groupId> 
     <artifactId>axis2-kernel</artifactId> 
     <version>...</version> 
     <exclusions> 
     <exclusion><!-- declare the exclusion here --> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    </dependencies> 
</project> 
2

번호 하나 : 받는다는 저장소를 사용> 태그가 < 배제를 사용하여 전이 종속성을 제외 할 수 있습니다. 이것은 정적 컨텐츠가있는 간단한 Apache HTTP 사이트 일 수 있습니다. 그러나 Sonatype Nexus 또는 JFrog Artifactory를 사용하여 다른 곳에없는 인공물을 저장하는 것이 좋습니다. JBoss 저장소 또는 IBiblio에서 찾을 수 있습니다 (모두 매우 높음)

2 번 : 해당 종속성을 pom에 추가하고 원하는 범위를 설정할 수 있습니다. 이슈를 제외하면 어쨌든 다시 추가해야합니다. Maven은 항상 pom으로 직접 속에있는 것을 선호합니다 :

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <scope>provided</scope> 
</dependency> 
+0

제공된 스코프가있는 servlet-api를 추가하는 것이 실제로 더 좋은 옵션 일 수 있습니다. Nexus/JFrog의 사용에 관해서는 링크 된 답변보다 '더 나은'옵션이지만 OP가 방금 시작되었습니다. 점차적으로 인용 된 벽돌 벽이 곡선을 학습하는 것을 막기 위해 점차적으로 Maven에게 소개해 드리겠습니다.;) – Tim

+0

작은 충격보다 다른 옵션은 없습니다 :) : 처음에는 Maven 저장소를 일반적인 네트워크 드라이브에 배치하고 file : ///을 통해이를 참조하십시오. 빠르고/더럽지 만 여전히 모든 사용자가 아티팩트를 로컬로 설치하지 않고도 빌드를 실행할 수 있습니다. – wemu

0
  1. 어떻게 실종 종속성을 추가하는 다양한 솔루션이 있습니다. 예를 들어, 범위 system을 사용하고 경로를 제공 할 수 있습니다 (JAR을 프로젝트에 넣고 ${basedir}에 상대적인 경로 사용).

    하지만 훨씬 더 나은 솔루션들이 자신의 저장소를 만들 수 있도록하고 그들은 여전히 ​​인터넷이 실패 작동하기 때문에 Nexus 또는 Artifactory 같은 서버를 설치하는 것입니다 (예를 들어, 어떤 바보가 라우터를 중단하거나 ISP는 몇 가지가 있습니다 문제 또는 누군가가 많은 섬유를 통해 18 인치 double-T 강철 빔을 몰고 간다).

    다운로드가 지구의 반쪽을 돌아 다니는 대신 로컬 LAN을 통해 이루어지기 때문에 빌드가 훨씬 빨라집니다.

  2. 다른 범위로 POM에서 의존성을 반복하면됩니다 (POM이 항상 우승합니다) 또는 use a dependencyManagement element 수 있습니다.

    모든 프로젝트에서 한 곳에서 범위와 버전을 설정할 수 있기 때문에 dependencyManagement 접근 방식을 선호합니다.