2008-09-25 2 views
20

지금 당장은 두 가지 Eclipse 프로젝트가 있습니다. 두 프로젝트 모두 Maven 2를 모든 jar 종속성 장점으로 사용합니다.참조 된 Eclipse 프로젝트를 Maven 종속성에 추가

이클립스 내부에서 프로젝트 바의 빌드 경로에 프로젝트 Foo가 포함되어 있으므로 프로젝트 바의 Foo 클래스를 사용할 수 있습니다. 이 일식 땅에서 정말 잘 작동하지만, 내가하려고하면

mvn compile 

을 바의 디렉토리 내에 메이븐 이클립스의 빌드 경로에 프로젝트 간 관계에 대해 알고하지 않기 때문에 실패합니다.

개미를 사용했다면 foo.jar를 프로젝트 바의 클래스 패스에 복사하는 것처럼 어리석은 짓을하기 위해 사용 하겠지만, 내가 알 수있는 한, 모든 것이 메이븐 랜드에서 훨씬 덜 세련되게 수행됩니다.

이 유형의 문제에 대한 표준 해결 방법이 있는지 궁금합니다. 상당히 일반적인 것 같아서 Maven 작동 방식에 대한 기본적인 내용을 놓친 것 같습니다.

+0

aa .. 촬영 ... 나는 이것을 전에했습니다. 하지만 지금은 (집에서) 그것을 찾을 수 없습니다. 내가 사무실로 돌아갈 때까지 아직 대답이 없다면 ... 나는 당신을 위해 그것을 찾아 볼 것입니다. – paan

답변

17

아마 당신은 이클립스 구성 -> 빌드 경로를 통해 다른 프로젝트를 참조하고 있습니다. 이것은 Eclipse를 사용하여 프로젝트를 빌드하는 한 작동합니다.

프로젝트 바에서 첫 번째 mvn 설치를 실행하고 (Maven 저장소에 Bar를 넣기 위해) Foo의 pom.xml에 종속성을 추가하십시오.

그래야합니다!.

1

나는 그것을 처리하는 가장 좋은 방법은 Foo와 마찬가지로 Maven 프로젝트를 Bar로 만들고, mvn install이므로 로컬 Maven 저장소에서 사용할 수 있다고 생각한다. 단점은 Maven이 Bar에 대한 변경 사항을 볼 때마다 해당 프로젝트를 설치해야한다는 것입니다.

+0

이것은 정확하게 사람들이 피하고 싶어하는 것입니다. 당신이 개발하고 있다면 당신은 항상 물건을 바꿉니다. 매번'mvn install '을 원할 것입니다. – T3rm1

1

완전한 대답이 아닙니다.
바의 pom은 maven을 컴파일하기 위해 Foo를 포함해야합니다.
나는이 질문에도 관심이있다. 그러나 이클립스가 메이븐이 추가 된 의존성을 인식하는 방법의 관점에서 볼 때, 사실은 같은 작업 공간에있는 다른 프로젝트이다. 현재 수행 후 빌드 경로를 변경합니다. mvn eclipse:eclipse

8

m2eclipse 플러그인을 확인하십시오. POM을 변경하면 프로젝트 빌드 경로가 자동으로 동적으로 업데이트됩니다. mvn eclipse:eclipse을 실행할 필요가 없습니다.

또한 플러그인은 종속성이 동일한 작업 공간에 있는지 감지하고 해당 프로젝트를 빌드 경로에 추가합니다.

m2eclipse를 사용하면 프로젝트 빌드 경로를 수동으로 변경하지 않는 것이 가장 이상적입니다. 대신 pom.xml을 편집하는 것이 적절한 방법입니다.

이전에 언급했듯이, Maven은 Eclipse 프로젝트 빌드 경로에 대해 알지 못할 것이다. pom에 모든 종속성을 추가해야하며 mvn install을 실행하여 먼저 모든 종속성을 빌드하고 설치해야합니다.

단일 명령으로 두 프로젝트를 모두 빌드하려는 경우 project aggregation이 재미있을 수 있습니다.

2

부모 메이븐 프로젝트와 두 개의 하위 프로젝트가있는 대체 방법을 시도 할 수 있습니다. 예를 들어,

학부모 (pom.부모의 루트에서, 받는다는는 A에 대한 이클립스 프로젝트를 생성합니다 이클립스 : 당신이 MVN 이클립스를 실행할 때 다음> B

-> A (B에 따라 다름) - XML은 두 아이 프로젝트/모듈) 가에 대한 참조를 가지고 B 클래스가 있고 B 클래스가 A 클래스 패스에 필요한 프로젝트로 제공됩니다.

부모 프로젝트의 루트에서 mvn install을 실행하여 두 프로젝트를 모두 컴파일 할 수 있습니다.

설정을 완료하려면 "프로젝트를 작업 영역으로 복사"를 선택하지 않고 Eclipse로 A와 B를 모두 가져와야합니다.

0

로컬 프로젝트를 참조했지만 해당 버전이 업데이트 (일반적으로 증가)되어있는 경우 지역 리포에서만 찾을 수 있으며 POM (업데이트 예정) 버전을 업데이트해야합니다).


소스 컨트롤을 통해 태그를 지정했기 때문에 버전 관리가 필요하지 않은 "공통 프로젝트"(모든 곳에서 사용됨)가 있습니다. 그래서 하나

  • 는 항상 안전을 위해 좋은 해결 방법을하는 고정 된 버전에 그것을 유지 또는
  • 특별한 LATEST 버전

그것을 참조.

0

나는 이것을 할 필요가 있었고 외부 mvn clean install 명령으로 빌드해야했습니다. Eclipse에서이를 구성하는 올바른 방법은 다음과 같습니다. (프로젝트 B를 A의 종속성으로 사용)

  1. Eclipse에서 프로젝트 A의 pom.xml을 엽니 다.
  2. Dependencies 탭으로 이동하십시오. 이 Enter groupId, artifactId or sha1 prefix or pattern (*): 말 위에
  3. 팝업에서 (왼쪽 종속성 상자) 페이지
  4. 의 중간에 Add... 버튼을 클릭, 텍스트 라인 아래에 상자가 있어야한다. 이 상자에 프로젝트 B의 이슈 ID를 입력하십시오.
  5. 두 번이 프로젝트 당신은 후 프로젝트를 업데이트해야 할 수 있습니다
    1. 에 종속성으로 추가 할 항아리를 클릭합니다.
    2. 오른쪽 클릭 프로젝트 A를
    3. 메이븐 패키지 탐색기 당신에 -> 업데이트 프로젝트 ...
    4. 그런 다음 팝업에서 확인을 누르십시오.