maven 의 optional 과 provided 의 차이, deploy 팁
27712 단어 shell
필 자 는 프레임 워 크 jar 를 쓸 때 일부 의존 은 jar 에서 인용 되 지 않 아 도 된다 는 것 을 발견 했다. 예 를 들 어 tomcat 는 완전한 tomcat 독립 응용 을 사용 하면 Spring boot web 는 의존 도 를 제거 해 야 한다.그리고 필 자 는 항상 다른 프레임 워 크 jar 가 쓴 규범 에 맞지 않 는 jar 를 제외 하고 jar 자체 가 의존 해 야 할 다른 jar 를 도입 해 야 합 니 다. 그러나 다른 jar 제공 능력 이 필요 하거나 일부분 만 인용 해 야 합 니 다. 이것 이 바로 provided 와 optional 입 니 다.
scope provided
demo, spring boot 를 예 로 들 어 우리 가 독립 된 tomcat 용 기 를 사용 하여 운행 한다 고 가정 합 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.2.4.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.2.4.RELEASE</version>
<scope>provided</scope>
</dependency>
이 때 는 독립 된 tomcat 가 웹 용 기 를 제공 하 는 능력 입 니 다. spring - boot - starter - tomcat 는 컴 파일 테스트 에서 만 사용 되 며 전달 성 이 없습니다. 이 기능 은 독립 된 tomcat 에서 제공 합 니 다.scope
optional
optional 은 scope 의 범주 가 아니 라 단독 태그 입 니 다.선택 할 수 있 음 을 나타 낸다. 즉, n 가지 능력 을 제공 하 는 것 이다. 업 무 는 한 가지 능력 만 사용 할 수 있 고 업무 가 스스로 어떤 의존 을 선택 할 지 결정 할 수 있 으 며 반드시 업무 에 의존 을 추가 해 야 한다. 그렇지 않 으 면 기능 을 제공 할 수 없다.예 를 들 어 log, log 는 보통 그 중의 한 가지 만 있 으 면 되 고 업무 가 실제 에 따라 결정 된다.
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
<version>3.2.12</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.26.0-GA</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.3.0</version>
<optional>true</optional>
</dependency>
mybatis 역시 마찬가지 입 니 다. mybatis 는 많은 데이터 베 이 스 를 지원 하지만 사용 자 는 스스로 선택해 야 합 니 다. jar 의존 은 전달 되 지 않 습 니 다. 기능 을 사용 하려 면 다른 jar 에 의존 해 야 합 니 다. 이것 은 업무 에 의 해 결 정 됩 니 다.
총결산
provided 는 기능 이 다른 응용 프로그램 이나 모듈 에서 제공 되 고 optional 은 여러 가지 능력 으로 하 나 를 선택 하 며 자신 이 필요 로 하 는 jar 에 손 으로 의존 해 야 합 니 다. 그들 은 전달 성 이 없습니다.
작은 기술, 필 자 는 deploy 에서 기본적으로 deploy 소스 코드 를 설정 하지 않 고 플러그 인 을 설정 해 야 합 니 다.
<build>
<plugins>
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>3.0</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
물론 setting. xml 는 업 로드 된 사용자 암 호 를 설정 해 야 합 니 다. deploy 권한 이 있어 야 합 니 다.
<servers>
<server>
<id>快照ID</id>
<username>xxx</username>
<password>xxx</password>
</server>
<server>
<id>正式版ID</id>
<username>xxx</username>
<password>xxx</password>
</server>
</servers>
deploy 가 필요 한 pom 은 설정 이 필요 합 니 다. ID 는 위의 설정 과 일치 해 야 합 니 다.
<distributionManagement>
<repository>
<id>正式版ID</id>
<url>正式版url地址</url>
</repository>
<snapshotRepository>
<id>快照ID</id>
<url>快照URL</url>
</snapshotRepository>
</distributionManagement>
deploy 는 버 전 번 호 를 통 해 deploy 스냅 샷 인지 정식 인지 구분 합 니 다. 예 를 들 어 1.0.0 정식 버 전 1.0.0 - snapshot 스냅 샷 버 전 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.