Spring - 폐쇄망 Nexus - 매이븐 프로젝트에서 업로드(배포) (3/3)

반응형

 

넥서스 리파지토리의 서버가 존재한다는 전제하에서 진행합니다.

넥서스 설정은 아래의 포스팅을 확인해주세요.

넥서스 설정 : https://luvris2.tistory.com/399

 

Spring - 폐쇄망 Nexus - 설치, 설정, 호스트 리파지토리 생성 (1/3)

포스팅에 사용된 시스템 정보 OS : Windows Nexus : nexus-3.45.0-01 STS : 4.17 넥서스 넥서스란? (Nexus) Nexus Repository OSS의 공식 설명 범용 형식을 지원하는 무료 아티팩트 저장소 범용 리파지토리 지원 개인

luvris2.tistory.com

 

폐쇄망(내부망)에서 라이브러리 다운 받기 : https://luvris2.tistory.com/417

 

Spring - 폐쇄망 Nexus - 업로드(배포), 다운로드 (2/3)

넥서스 리파지토리의 서버가 존재한다는 전제하에서 진행합니다. 넥서스 설정은 아래의 포스팅을 확인해주세요. https://luvris2.tistory.com/399 Spring - 폐쇄망 Nexus - 설치, 설정, 호스트 리파지토리 생

luvris2.tistory.com


매이븐 프로젝트 업로드 준비

(Maven Project Prepare to Upload )

  • 예시) 업로드를 위해 여러 라이브러리 의존성 추가
  • pom.xml
<dependencies>
    <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
    <dependency>
        <groupId>org.thymeleaf</groupId>
        <artifactId>thymeleaf</artifactId>
        <version>3.1.1.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.31</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.11</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

 

  • 추가된 라이브러리 확인


매이븐 리파지토리 설정

(Maven Repository Setting)

setting.xml 파일 설정

  • 메이븐 리파지토리 폴더(.m2)에 setting.xml 파일 열기
  • 파일이 없다면 파일 생성 

<빈 setting.xml 파일을 생성하는 모습>

 

  • setting.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
   http://maven.apache.org/xsd/settings-1.0.0.xsd">

   <servers>
     <server>
    <!--
       <id> 설정한 넥서스 리파지토리 ID </id>
       <username> 넥서스 리파지토리에 접근 가능한 유저 아이디 </username>
       <password> 유저의 비밀번호 </password>
    -->
       <id>hostedRepoTest-release</id>
       <username>hostedRepoTestUser</username>
       <password>admin123</password>
     </server>
     <server>
    <!--
       <id> 설정한 넥서스 리파지토리 ID </id>
       <username> 넥서스 리파지토리에 접근 가능한 유저 아이디 </username>
       <password> 유저의 비밀번호 </password>
    -->
       <id>hostedRepoTest-snapshot</id>
       <username>hostedRepoTestUser</username>
       <password>admin123</password>
     </server>
   </servers>
 </settings>

설정한 setting.xml 파일 적용

  • (스프링에서) Window - Preferences

 

  • Maven - User Settings - User Settings Browse...

 

  • setting.xml 파일이 위치한 디렉토리로 이동 - 열기

 

  • setting.xml 파일이 적용되었는지 확인 후 - Apply and Close


매이븐 프로젝트 설정

(Maven Project Setting)

pom.xml 파일 설정

distributionManagement

  • 빌드 프로세스 전체에 생성된 아티팩트 및 지원 파일의 배포를 관리
  • 프로젝트가 배포될 때 원격 저장소에 도달하는 위치와 방식을 지정
    • deploy 실행시 배포되는 위치
  • 즉, 배포를 위한 것

pom.xml 코드

<distributionManagement>
<snapshotRepository>
    <!-- 스냅샷 리파지토리 설정
        <id>설정한 넥서스 리파지토리</id>
        <name>리파지토리 이름</name>
        <url>리파지토리 URL</url>
    -->
    <id>hostedRepoTest-snapshot</id>
    <name>hostedRepoTest-snapshot</name>
    <url>http://localhost:8081/repository/hostedRepoTest-snapshot/</url>
</snapshotRepository>
<repository>
    <!-- 릴리즈 리파지토리 설정
        <id>설정한 넥서스 리파지토리</id>
        <name>리파지토리 이름</name>
        <url>리파지토리 URL</url>
    -->
    <id>hostedRepoTest-release</id>
    <name>hostedRepoTest-release</name>
    <url>http://localhost:8081/repository/hostedRepoTest-release/</url>
</repository>
</distributionManagement>

 

  • 참고) 모든 소스 코드
더보기
<?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>test1</groupId>
  <artifactId>example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <distributionManagement>
    <snapshotRepository>
		<id>hostedRepoTest-snapshot</id>
		<name>hostedRepoTest-snapshot</name>
		<url>http://localhost:8081/repository/hostedRepoTest-snapshot/</url>
    </snapshotRepository>
    <repository>
		<id>hostedRepoTest-release</id>
		<name>hostedRepoTest-release</name>
		<url>http://localhost:8081/repository/hostedRepoTest-release/</url>
    </repository>
  </distributionManagement>

  <name>test Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf -->
	<dependency>
	    <groupId>org.thymeleaf</groupId>
	    <artifactId>thymeleaf</artifactId>
	    <version>3.1.1.RELEASE</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>8.0.31</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.11</version>
	</dependency>

	<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
	<dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	    <version>1.18.24</version>
	    <scope>provided</scope>
	</dependency>
  </dependencies>

  <build>
    <finalName>example</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

배포 (Deploy)

  • Run As - Maven build 

 

  • Base directory : Workspace를 눌러서 해당 프로젝트 선택
  • Goals : clean deploy 입력
  • User settings : File System을 눌러서 작성한 setting.xml 파일 경로 입력
  • Run

 

  • 업로드(배포) 확인

반응형