[deploy] maven 으로 nexus 에 배포하기

package.json > Gruntfile.js > pom.xml 설정

develop, deploy, nexus, grunt, maven
written byzuhern1zuhern

in

2019. 11. 21


목표

  1. grunt 로 압축한다.
  2. maven 에서 nexus로 업로드 한다.
  3. 다른 프로젝트에서 해당 소스를 nexus에서 받아서 사용한다.

1. 명칭 설정 (안해도 됌)

node package.json 설정

// name 외에 다른 deploy file 명을 생성하고 싶으면, 원하는 명칭으로 정의
{
  "name": "project",
  "deployName": "prj",
  "version": "1.0.0",
}

2. 압축하기

Gruntfile.js 에서 compress 설정

grunt compress library 사용 아래 링크에서 Options 참고 grunt-contrib-compress

compress: {
  main: {
    options: {
      mode: "tgz",
      // package.json 에서 정의된 명칭      // 압축된 파일을 저장할 위치      archive: "deploy/<%= pkg.deployName %>-<%= pkg.version %>.tar.gz",    },
    files: [{
      expand: true,
      cwd: "dist",    // dist 폴더의 (파일 참조하는 최상위 폴더 위치)
      src: ["**/*"]   // 모든 파일을 대상으로 한다.
    }]
  }
}
# grunt test
grunt compress

3. Nexus 로 upload 하기

maven pom.xml 에 지정

deploy 폴더에 tar.gz 파일이 생성되었으면, 이를 nuxus 로 올리자.

<?xml version="1.0" encoding="UTF-8"?>
<project ...>
  ...	
  <properties>
    <deploy.groupId>project</deploy.groupId>
    <deploy.artifactId>prj</deploy.artifactId>
    <deploy.ver>1.0.0</deploy.ver>
    <deploy.repositoryId>Snapshots</deploy.repositoryId>
    <deploy.file>
      deploy/${deploy.artifactId}-${deploy.ver}.tar.gz
    </deploy.file>
    <deploy.packaging>tar.gz</deploy.packaging>
    <repo>http://url/nexus/repository</repo>
    <deploy.url>${repo}/web-lib_snapshot</deploy.url>
  </properties>
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8.2</version>
        <goals>deploy</goals>
        <configuration>
          <groupId>${deploy.groupId}</groupId>
          <artifactId>${deploy.artifactId}</artifactId>
          <file>${deploy.file}</file>
          <generatePom>false</generatePom>
          <packaging>${deploy.packaging}</packaging>
          <version>${deploy.ver}</version>
          <repositoryId>${deploy.repositoryId}</repositoryId>
          <url>${deploy.url}</url>
        </configuration>
      </plugin>
    </plugins>
  </build>	
</project>
# test
mvn deploy:deploy-file

4. 다른 프로젝트에서 불러오기

bower에서 nexus에 올라간 파일을 버전 별로 가져올 수가 없었다.
bower-nexus-resolver 사용하여 해결
참조: bower-nexus-resolver

npm install bower-maven-resolver --save-dev

.bowerrc 설정

{
  "directory": "bower_components",
  "analytics": false,
  "timeout": 120000,
  "registry": {
    "search": [
      "http://url/nexus/repository",
    ]
  },
  "resolvers" : [ 
    "bower-nexus3-resolver",
    "bower-maven-resolver"
  ]
}
  "dependencies": {
    "maven3+http://url/nexus/repository": "1.0.0"
  }

메모

  • bower register 는 git url 로 가져와서 등록한다.
  • bower install 시 bower_components 하위 레벨 폴더들이 700 으로 생성되면서,
    그 안에 들어가야할 파일들이 루트레벨에 다운로드되는 현상 발생
    원인은 찾지 못하였음. 지우고 다시 깔다 보면 제대로 깔림
    한번 제대로 되면 계속 제대로 받아짐… 뭐지 ㅠ