2017-11-20 16 views
2

BOM (Bill of Materials)으로 사용하려면 pom.xml이 필요합니다. 정의 된 종속성 중 하나는이 BOM의 라이브러리를 사용하는 코드를 테스트하는 데 사용되는 *-test 이슈입니다.Maven BOM (BOM)에서 종속성의 범위를 정의하는 것이 좋은 습관입니까?

질문 : *-test 이슈가 BOM 자체의 test 범위 일 뿐이라고 지정하거나 BOM 사용자가 필요하다면 BOM 사용자가 프로젝트의 POM에 지정하도록 지정하는 것이 적절하거나 우수합니다. ?

<?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> 

    <groupId>com.example.mylib</groupId> 
    <artifactId>mylib-bom</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 
    <name>MyLib (Bill of Materials)</name> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.example.mylib</groupId> 
       <artifactId>mylib-cool-library</artifactId> 
       <version>${project.version}</version> 
      </dependency>  
      <dependency> 
       <groupId>com.example.mylib</groupId> 
       <artifactId>mylib-test</artifactId> 
       <version>${project.version}</version> 
       <scope>test</scope> <!-- === HERE === --> 
      </dependency>  
     </dependencies> 
    </dependencyManagement>  
</project> 

나는 예를 들어, Spring 프레임 워크 BOM은, 참으로, 명시 적으로 범위를 정의하지 않습니다,이 작업을 수행하는 방법을 기존의 프로젝트를보고 하였다. 그러나 나는 이것에 대한 쓴 것과 같은 규칙이 있는지 궁금해하고있다.

+2

귀하의 pom 사용자가 적용 가능한 종속성이 가져야하는 범위를 결정하도록하는 것이 가장 좋습니다. – khmarbaise

답변

2

가장 좋은 방법은 사용자가 범위를 결정하게하고 이 아니며이 BOM (또는 상위 POM)에 설정되지 않도록하는 것입니다.

BOM에서 범위를 설정하면 사용자 프로젝트에서 볼 수 있듯이 해당 종속성의 기본 범위가 변경됩니다. maven의 기본 종속성 범위는 compile이므로 종속성을 컴파일 할 때 종속성의 범위를 생략하는 것이 일반적입니다. BOM이 다른 범위를 부과하는 경우 BOM을 사용하는 다른 개발자 (또는 심지어 나중 시점 에서조차도)에게 놀랄 수 있습니다.