2016-07-05 4 views
1

에 대한 잘못된 디렉토리에 보이는 나는이 아이 pom.xml 다음 나는 내 로컬 저장소 (.m2/repository)에 javax.vecmath를 설치하려는받는다는 종속성

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>runtime_shared</groupId> 
     <artifactId>runtime_shared.master</artifactId> 
     <relativePath>../pom.xml</relativePath> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 
    <groupId>runtime_shared</groupId> 
    <artifactId>javax.vecmath</artifactId> 
    <name>javax.vecmath</name> 
    <version>1.0.0.qualifier</version> 
    <build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-install-plugin</artifactId> 
      <version>2.3.1</version> 
      <executions> 
       <execution> 
        <id>vecmath</id> 
        <phase>install</phase> 
        <goals> 
         <goal>install-file</goal> 
        </goals> 
        <configuration> 
         <file>${basedir}/vecmath.jar</file> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>${project.artifactId}</artifactId> 
         <version>${project.version}</version> 
         <packaging>jar</packaging> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
</project> 

. 나중에 나는이처럼 내 부모 pom.xml이를 지정

<dependency> 
     <groupId>runtime_shared</groupId> 
     <artifactId>javax.vecmath</artifactId> 
     <version>1.0.0.qualifier</version> 
    </dependency> 

을 그러나, 나는 mvn install -X을 할 때와 같은, 그 받는다는는 완전히 다른 경로를 찾습니다 보게 : 분명히

[DEBUG] /home/usr/workspace_runtime/runtime_shared/javax.vecmath/target/javax.vecmath-1.0.0.qualifier.jar 

및 오류가 발생합니다. 어떤 환경 변수가 잘못 설정 되었기 때문에 또는 <file>${basedir}/vecmath.jar</file> 태그 때문에 ${basedir}이 어떻게 든 다른 곳을 참조합니까? 또한 ${project.basedir}을 사용해 보았지만 작동하지 않았습니다.

[DEBUG] /home/usr/.m2/repository/x/org.apache.felix.main/1.0.0/org.apache.felix.main-1.0.0.jar 
[DEBUG] /home/usr/.m2/repository/x/org.apache.felix.gogo/0.10.0/org.apache.felix.gogo-0.10.0.jar 
[DEBUG] /home/usr/workspace_runtime/x/com.google.protobuf/target/com.google.protobuf-2.5.0.jar 

당신이 통지하는 경우, 디렉토리가 올바른지 처음 두 프로젝트가 :

이 명확한 그림을 제공하기 위해, 여기에 또 다른 경우입니다. 그러나, 마지막 하나는, 어떻게 든 잘못된 디렉토리 아래에서 보입니다. 그 결과 :

package com.google.protobuf does not exist 

제안 사항이 있으십니까? 당신이 가진 Maven 프로젝트를 선언하면

+0

'maven-install-plugin'의이 설정을 제거하십시오. 필요하지 않습니다. 단지'mvn clean install'을 호출하십시오. – Tunaki

+0

그러면 jar 파일을 로컬 저장소에 어떻게 추가 할 예정입니까? 나는 당신이주의하는 경우에, 저 구성 단면도에있는 단지에 참고한다. –

+0

'install'하면 로컬 repo에 jar 파일이 자동으로 설치됩니다. – Tunaki

답변

0

는 :

<groupId>runtime_shared</groupId> 
<artifactId>javax.vecmath</artifactId> 
<version>1.0.0.qualifier</version> 

이것이 당신의 프로젝트에서 메이븐을 의미 :

  • 가 (프로젝트의 /target 디렉토리에 jar) 이슈를 생성 YOUR 출처 (기본값 : src/main/java/...packages...)
  • 설치 지역 메이븐의 repo (기본값 : ~/.m2/repository)에 적어도 mvn install가 불려 갔을 경우 (Maven/Introduction to the Build Lifecycle 참조 this answer)
  • 는 (제 3 자 아티팩트를 추가하는 의미가 아니에요

을 호출되는 remote Maven repomvn deploy 경우에 배포 javax.vecmath:vecmath)을 리포지토리에 저장하십시오.

once again, 포인트 1 및 2. the answer to your question a few days ago, 리포지토리에 타사 아티팩트를 저장하는 방법은 로컬 또는 원격이어야합니다.

+0

하지만'maven-install-plugin'을 통해 로컬 저장소에 항아리를 추가 할 수 있습니다. 그것은 항아리를 추가, 나는 폴더를 탐색하고 거기에 있어요. 그것은 그것을 잘못 사용하고 있습니까? –

+0

그리고 저는 수천 번 말했습니다. 터미널 명령을 사용하여 제 3 자의 아티팩트를 추가 할 수는 없습니다. 이것은 내가이 마술을하는 플러그인을 찾는 이유입니다. –

+0

터미널 명령을 사용할 수 없다면 어떻게 Maven을 사용할 수 있습니까? –