2017-10-11 1 views
0

제로 관리 (로컬 lib 폴더)에서 로컬 관리 시스템 (Archiva)으로 마이그레이션하여 프로젝트에서 사용하는 종속성을 다시 제어하려고합니다.Apache Archiva - licenses로 로컬 Maven 저장소 관리하기

각각의 우리의 의존성은 Archiva가 생성 한 구조와 비슷한 별도의 디렉토리에 이미 있습니다. 개별 디렉토리에는 종속성 jar, source zip/jar, javadoc zip/jar 및 종속성에 대한 라이센스가있는 텍스트 파일이 들어 있습니다. 후자는 빌드 프로세스에서 필요합니다. 최종 제품에는 모든 종속성 라이센스가 파일 형식 (URL이 아님)으로 수집되는 타사 라이센스 디렉토리가 있어야하기 때문에 필요합니다.

해당 라이센스를 제외하고 종속성의 모든 이슈를 올바르게 upload에 관리했습니다 (문서 및 시행/오류를 읽은 후). 라이센스를 나타내는 txt 파일이 업로드되는 동안, 필자는 그러한 파일이 dependecy에 대한 라이센스임을 나타내는 방법을 이해하지 못합니다.

나는 license-maven-plugin를 통해 메이븐에서 그것을 정보 라이센스를 포함하는 종속성의 POM 파일을 편집 한 다음 검색 시도 :

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.example</groupId> 
    <artifactId>example</artifactId> 
    <version>2.5.2</version> 

    <licenses> 
     <license> 
      <url>http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt</url> 
     </license> 
    </licenses> 
</project> 

하지만이 작동하지 않습니다. 플러그인을 사용하면 HTTP 401 오류가 발생합니다.

--- license-maven-plugin:1.14:download-licenses (download-licenses) @ maventest --- 
Unable to retrieve license for dependency: org.example:example 
http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt 
Server returned HTTP response code: 401 for URL: http://localhost:8282/archiva/repository/myrepo/org/example/example/2.5.2/example-2.5.2-LICENSE.txt 

그것은 사용권에 대한 전체 URL을 지정해야한다는 다소 직관적이지 않은 것 같다 - 파일은 다음 관련 항아리 종속성 및 POM 파일 자체에 서버에 바로 거기 (그리고 그들은 둘 다없이 다운로드 무단 된 오류) - 그러나 그것이 매개 변수가 원하는 것입니다. 거의 모든 라이선스는 공개 된 외부 사이트에서 호스팅되며 저장소 자체에서는 호스팅되지 않을 것으로 예상됩니다.

명시 적으로까지 다운로드가 간다 물론 작품의 프로젝트의 POM에 의존성을 알리는 :

<dependency> 
    <groupId>org.example</groupId> 
    <artifactId>example</artifactId> 
    <version>2.5.2</version> 
    <classifier>LICENSE</classifier> 
    <type>txt</type>   
</dependency> 

을하지만 그 느낌이 좋지 않습니다 -도 확실하지 않은 하나를 위해 빌드 프로세스에서이를 참조 할 방법 적절한 장소에 복사하십시오.

Archiva가 관리하는 저장소에서 어떻게 라이선스 아티팩트를 적절하게 처리합니까? Maven 프로젝트에서 어떻게 그들을 적절하게 참조합니까?

+0

처음에는 라이센스 파일과 관련하여 잘못된 가정이 ... 라이센스는 pom 파일 자체에서 수행되는 정보입니다 ... Maven 플러그인을 사용하여 라이센스를 빌드로 수집 할 수 있습니다 결과는 나중에 ... 또한 넥서스 저장소 관리자 – khmarbaise

+0

@ khmarbaise와 같은 것을 사용하도록 제안합니다. 귀하의 의견을 이해할 수 없습니다. 필자가 바라는 바로는 POM 파일에 라이선스 정보를 지정하고 나중에 플러그인을 사용하여 라이선스로 수집합니다. 내 질문에 마지막 XML 스 니펫은 필요한 파일이 저장소에 실제로 있다는 것을 보여 주기만하면됩니다. 플러그인으로 예상 한대로 액세스 할 수 없습니다. 나는 이미 Archiva에 해당하는 Nexus를 살펴볼 계획이었습니다. – predi

답변

0

Archiva에는 인증을 위해 사용자 이름과 암호가 필요없는 특별한 Guest 사용자 계정이 있습니다. 기본적으로 새로운 Archiva 인스턴스와 함께 제공되는 내장 리포지토리 (스냅 샷 및 내부)에 대해서만 리포지토리 옵저버 액세스 권한을 갖습니다. 리포지토리 관찰자 역할은 기본적으로 리포지토리 및 아티팩트에 대한 읽기 액세스입니다.

인증 할 필요없이 전체 URL을 통해 사용자 정의 로컬 리포지토리의 무작위 파일을 읽으려면 해당 리포지토리에 대한 리포지토리 관찰자 권한을 게스트 사용자에게 추가해야합니다.

이렇게하면 내 경우에 HTTP 401 오류를 피할 수 있고 라이센스 플러그인이 작동하기 때문에 POM 파일이 정상적으로 작동합니다.

게스트 (또는 다른 사용자) 계정을 관리하기위한 정확한 단계는 관리자 가이드 섹션 Manage Archiva Users에 설명되어 있습니다.

그러나 라이센스를 이런 방식으로 처리하는 것이 좋은지 아직 알 수 없습니다.그것은 일부 원격 위치에 그들을 유지하는 것, 나는 POM 파일 (URL에만, 아니 상대적 경로)에 <licenses> 속성의 구조를 기반으로 가정하고 선호하는 것 같습니다.