์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

ย 

์˜ˆ์ œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

์ด์ œ ์  ํ‚จ์Šค์—์„œ ์‹ค์ œ ๋นŒ๋“œ ์ž‘์—… ์„ค์ •์„ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์˜ˆ์ œ ย ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž. ๋งŒ๋“ค ํ”„๋กœ์ ํŠธ๋Š” jar ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” lib-hello ์™€ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น ํ”„๋กœ์ ํŠธ์ธ hello-webapp ๋ผ๋Š” ํ”„๋กœ์ ํŠธ์ด๋‹ค.

ย 

๋จผ์ € lib-hello ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฒ„์ „ ๊ด€๋ฆฌ์— ๋“ฑ๋กํ•ด ๋ณด์ž.

ย 

  1. ๋ฉ”์ด๋ธ ์•„ํ‚คํƒ€์ž… ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ jar ํŒŒ์ผ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    mvn archetype:generate -B -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DgroupId=com.example -DartifactId=lib-hello -Dversion=1.0-SNAPSHOT

  2. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ํŒจํ‚ค์ง• ํ˜•์‹์€ jar ํŒŒ์ผ์ด๋ฉฐ ๋ฉ”์ด๋ธ์— ๋””ํ”Œ๋กœ์ดํ•œ ํ›„์— hello-webapp ํ”„๋กœ์ ํŠธ์—์„œ ์ด ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋‹ค. ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•  ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ดย src/main/java/com/example/Hello.javaย ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ฐ„๋‹จํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ž.

    package com.example;
    
    public class Hello
    {
        public String getMessage( )
        {
            return "Hello";
        }
    }
  3. nexus ์—ฐ๊ณ„ ๋ฐ ์ง€์†์ ์ธ ํ†ตํ•ฉ ์—ฐ๊ณ„๋ฅผ ์œ„ํ•ด ๋ฉ”์ด๋ธ์˜ pom ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด ๋ณด์ž. ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    1. ๋‚ด๋ถ€ ๋„ฅ์„œ์Šค ์ €์žฅ์†Œ ์ถ”๊ฐ€ : ์ „ ์žฅ์—์„œ ๊ตฌ์ถ•ํ•œ ๋‚ด๋ถ€ ๋„ฅ์„œ์Šค ์ €์žฅ์†Œ๋ฅผ ์„ค์ •ํ•œ๋‹ค.

      <repositories>
        <repository>
          <id>public</id>
          <name>internal maven Repository</name>
          <url>http://nexus.example.com/content/groups/public/</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <name>Maven Plugin Repository</name>
          <url>http://nexus.example.com/content/repositories/central/</url>
        </pluginRepository>
      </pluginRepositories>
    2. junit ๋ฒ„์ „ ๊ฐฑ์‹  : ์ง€์†์ ์ธ ํ†ตํ•ฉ์‹œย ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๋ฅผ ๋นŒ๋“œ๋งˆ๋‹ค ์ˆ˜ํ–‰ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค. ์•„ํ‚คํƒ€์ž…์œผ๋กœ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ junit ์€ ๋ฒ„์ „ 3๋กœ ์„ค์ •๋˜๋ฏ€๋กœ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์ด ์‰ฌ์šด ๋ฒ„์ „ 4 ๋กœ ๋ณ€๊ฒฝํ•ด ๋ณด์ž.ย 

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.1</version>
        <scope>test</scope>
      </dependency>
    3. lib-hello ๋Š” jar ์ด๋ฏ€๋กœ ๋„ฅ์„œ์Šค์— ๋ฐ”๋กœ ๋””ํ”Œ๋กœ์ด ํ• ์ˆ˜ ์žˆ๋„๋ก <distributionManagement> ํ•ญ๋ชฉ์„ ์„ค์ •ํ•œ๋‹ค. ๋ณ„๋„์˜ ์ €์žฅ์†Œ์™€ ๊ณ„์ •์„ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ํ•ด๋‹น ์ •๋ณด๋กœ ์ˆ˜์ •ํ•œ๋‹ค.

      <distributionManagement>
        <repository>
          <id>releases</id>
          <url>http://nexus.example.com/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
          <id>snapshots</id>
          <url>http://nexus.example.com/content/repositories/snapshots</url>
        </snapshotRepository>
      </distributionManagement>
    4. distributionManagement์—ย ๋งž๊ฒŒ .m2/settings.xml ์— ์ธ์ฆ ์ •๋ณด๋ฅผ ์„ค์ •ํ•œ๋‹ค.

      <servers>
        <server>
          <id>releases</id>
          <username>deployment</username>
          <password>deployment123</password>
        </server>
        <server>
          <id>snapshots</id>
          <username>deployment</username>
          <password>deployment123</password>
        </server>
      </servers>
  4. ๋นŒ๋“œ๋•Œ๋งˆ๋‹ค ๋Œ๋ฆด ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž. ์ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์ž‘์„ฑํ•œ Hello.java ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋Š” HelloTest.java ์ด๋‹ค. ๋ฉ”์ด๋ธ์˜ ํ‘œ์ค€ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์„ฑ์— ๋งž๊ฒŒย src/test/java/com/example/HelloTest.java ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์ž.

    package com.example;
    import static org.junit.Assert.assertTrue;
    import org.junit.Test;
    public class HelloTest
    {
        @Test
        public void testHello( )
        {
            Hello h = new Hello();
            assertTrue(h.getMessage().contains("Hello"));
        }
    }
  5. ์ด์ œ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚ฌ๋‹ค. ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ฉ”์ด๋ธ ๋นŒ๋“œ๋ฅผ ๋Œ๋ฆฌ๊ณ  ์ €์žฅ์†Œ์— ๋””ํ”Œ๋กœ์ด ํ•ด ๋ณด์ž.

    mvn clean deploy

    2๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด ์Šค๋ƒ…์ƒท ์ €์žฅ์†Œ์— ๋””ํ”Œ๋กœ์ด ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด์ œ ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์†Œ์Šค๋ฅผย ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์ถ”๊ฐ€ํ•  ์‹œ์ ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ฉ”์ด๋ธ ๋นŒ๋“œ๋กœ ์ธํ•ด ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์ƒ์„ฑ ๋˜์—ˆ๊ณ  ์ง€๊ธˆ ์ถ”๊ฐ€ํ•˜๋ฉด ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค์™€ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์ถ”๊ฐ€๋˜์–ด ๋ฒ„๋ฆฐ๋‹ค.

ํ”ํžˆ ํ•˜๋Š” ์‹ค์ˆ˜๋กœ ์ปดํŒŒ์ผํ•ด์„œ ๋‚˜์˜ค๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑด ์ข‹์ง€ ์•Š์œผ๋ฏ€๋กœ ๊นจ๋—ํ•˜๊ฒŒ ์ง€์šฐ์ž. ๋ฉ”์ด๋ธ์˜ clean ๊ณจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ช…๋ น์–ด์ธ mvn clean ์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” target ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋œ๋‹ค.

ย 

์ด์ œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์„œ๋ฒ„์— ์†Œ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด ๋ณด์ž.ย 

์„œ๋ธŒ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๋…์ž๋“ค์€ ์„œ๋ธŒ๋ฒ„์ „ ์žฅ์—์„œ ์ตํžŒ svn import ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  git ์ด๋‚˜ gitlab ์‚ฌ์šฉ ๋…์ž๋“ค์€ ๊ฐ๊ฐ์˜ ์ €์žฅ์†Œ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋ณด์ž.

์›๊ฒฉ์ง€์— ์žˆ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ์„œ๋ฒ„์— ๋„ฃ์–ด์„œ ์‹ค์ œ ํ™˜๊ฒฝ๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š”๊ฒŒ ๋” ์ข‹์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์  ํ‚จ์Šค๊ฐ€ ๊ตฌ๋™๋˜๋Š” ์„œ๋ฒ„์—์„œ ์  ํ‚จ์Šค ๊ณ„์ •์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์„ฑํ•ด๋„ ๋œ๋‹ค.

ย 

์•„์ง ์›๊ฒฉ ๋ฒ„์ „ ๊ด€๋ฆฌ ์„œ๋ฒ„๊ฐ€ ๊ตฌ์ถ•๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋กœ์ปฌ์—์„œ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์–ด๋„ ๋œ๋‹ค.

์„œ๋ธŒ๋ฒ„์ „ ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ˆ์ฐจ์— ๋”ฐ๋ผ์„œ ๋นŒ๋“œํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ €์žฅ์†Œ์— ์ž„ํฌํŠธ ํ•ด ๋ณด์ž.

์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด file:/// ์ผ ๊ฒฝ์šฐ ์„œ๋ธŒ๋ฒ„์ „์ด 1.8 ์ด๋ฉด ์  ํ‚จ์Šค์™€ ์—ฐ๊ณ„ํ•  ์ˆ˜ ์—†๋‹ค.

์„œ๋ธŒ๋ฒ„์ „ 1.8 ๋ถ€ํ„ฐ ์ €์žฅ์†Œ์˜ ๋กœ์šฐ ๋ ˆ๋ฒจ ํฌ๋งท์ด ๋ณ€๊ฒฝ ๋˜์—ˆ์ง€๋งŒ ์  ํ‚จ์Šค์˜ ์„œ๋ธŒ๋ฒ„์ „ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ 1.7 ์ด๋ฏ€๋กœ file:// ๋ฐฉ์‹์˜ ์ €์žฅ์†Œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  1. ์„œ๋ธŒ๋ฒ„์ „ ํŒจํ‚ค์ง€๋ฅผ 1.7 ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ (๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)
  2. svnadmin create ๋กœ ๋กœ์ปฌ ์ €์žฅ์†Œ ์ƒ์„ฑ์‹œ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์˜ต์…˜์œผ๋กœ ์ƒ์„ฑ (๊ถŒ์žฅ)
    svnadmin create ~/svnreposย  --compatible-version 1.7ย 
  3. file:/// ๋ฐฉ์‹๋Œ€์‹  http:// ๋‚˜ https:// ๋ฐฉ์‹์˜ ์ €์žฅ์†Œ ์—ฐ๊ฒฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉ(๊ถŒ์žฅ)

ย 

  1. ์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ ์ƒ์„ฑ

    svnadmin create ~/svnrepos

  2. lib-helloย ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค.

    cd lib-hello

  3. ์†Œ์Šค๋ฅผ ์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ์— ์ž„ํฌํŠธํ•œ๋‹ค. ์ €์žฅ์†Œ๊ฐ€ ๋กœ์ปฌ์ด๋ฏ€๋กœ URL ์€ file:/// ์ด ๋ถ™์–ด์•ผ ํ•œ๋‹ค. ์ €์žฅ์†Œ ๊ฒฝ๋กœ๋Š” ์„œ๋ธŒ๋ฒ„์ „ ๊ด€๋ก€์— ๋”ฐ๋ผ lib-hello/trunk ์— ๋„ฃ๋Š”๋‹ค. ${HOME} ๋Š”ย ์‚ฌ์šฉ์ž์˜ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์˜๋ฏธํ•˜๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜์ด๋‹ค.

    svn import .ย file:///${HOME}/svnrepos/lib-hello/trunkย -m "project import"

  4. ์ •์ƒ์ ์œผ๋กœ ์ž„ํฌํŠธ๋˜์—ˆ๋‹ค๋ฉด ์›๋ž˜ ์†Œ์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ lib-helloย ๋Š” ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

    cd ..

    mv lib-hello lib-hello-org

  5. ์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ์—์„œ ์†Œ์Šค๋ฅผ ์ฒดํฌ ์•„์›ƒ ํ•ด ๋ณธ๋‹ค. ์ฒดํฌ ์•„์›ƒํ•˜๋Š” URL ์€ ์  ํ‚จ์Šค์˜ ์ž‘์—… ์„ค์ •์— ๊ผญ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ž˜ ๊ธฐ์–ตํ•ด ๋‘์ž.

    svn coย file:///${HOME}/svnrepos/lib-hello/trunkย lib-hello

ย 

๊นƒ ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋กœ์ปฌ์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ๋‹ค.

  1. lib-helloย ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค.

    cd lib-helloย 

  2. git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

    git initย 

  3. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

    git add pom.xml src/ย 

  4. ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ปค๋ฐ‹ํ•œ๋‹ค.

    git commit -m "first commit"ย 

๊นƒ๋„ ์  ํ‚จ์Šค์—์„œ ํด๋ก ํ•ด์•ผ ํ•˜๋ฏ€๋กœ URL ์ด ํ•„์š”ํ•˜๋‹ค. ๋‹ค์Œ ๋กœ์ปฌ์˜ ์ €์žฅ์†Œ URL ์„ ๊ธฐ์–ตํ•ด ๋‘์ž. (๊ฒฝ๋กœ๋Š” ๋…์ž๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.)

file:///${HOME}/lib-hello


์ด์ œ lib-hello ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์›น app ์ธ hello-webapp ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด ๋ณด์ž. ์—ญ์‹œ ๋ฉ”์ด๋ธ์˜ ์•„ํ‚คํƒ€์ž…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๊ตฌ์„ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

mvn archetype:generate -B -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.example -DartifactId=hello-webapp -Dversion=1.0

์ •์ƒ์ ์œผ๋กœ ๋ฉ”์ด๋ธ์ด ์‹คํ–‰๋๋‹ค๋ฉด hello-webapp ๋ผ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋์„ ๊ฒƒ์ด๋‹ค.

ย 

์ด์ œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์— ๋งž๊ฒŒ ๋ฉ”์ด๋ธ ์„ค์ • ํŒŒ์ผ์ธ pom.xml ์„ ์ˆ˜์ •ํ•ด ๋ณด์ž. ย ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • lib-hello ์˜์กด์„ฑ ์ถ”๊ฐ€ : lib-hello ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ <dependency> ํ•ญ๋ชฉ์— lib-hello ๋ฅผ ์ถ”๊ฐ€ํ•˜์ž.

    <dependency>
      <groupId>com.example</groupId>
      <artifactId>lib-hello</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  • jUnit ๋ฒ„์ „ ๊ฐฑ์‹ : ์•„ํ‚คํƒ€์ž…์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด jUnit 3 ๊ฐ€ ์„ค์ •๋˜๋ฏ€๋กœ 4๋กœ ๋ณ€๊ฒฝํ•˜์ž.

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  • ๋‚ด๋ถ€ ๋„ฅ์„œ์Šค ์ €์žฅ์†Œ ์ถ”๊ฐ€ย : lib-hello ์•„ํ‹ฐํŒฉํŠธ๋Š” ๋‚ด๋ถ€ ๋„ฅ์„œ์Šค ์ €์žฅ์†Œ์— ์žˆ์œผ๋ฏ€๋กœ ์ €์žฅ์†Œ ์„ค์ •์ด ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์œผ๋ฉด lib-hello ์ฐพ์ง€ ๋ชปํ•ด์„œ ๋นŒ๋“œ๋ฅผ ํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์ œ๋Œ€๋กœ ์„ค์ •ํ•˜์ž.

    <repositories>
      <repository>
        <id>public</id>
        <name>internal maven Repository</name>
        <url>http://nexus.example.com/content/groups/public/</url>
      </repository>
    </repositories>
    <pluginRepositories>
      <pluginRepository>
        <id>public</id>
        <name>Maven Plugin Repository</name>
        <url>http://nexus.example.com/content/groups/public/</url>
      </pluginRepository>
    </pluginRepositories>

ย 

ํŽธ์ง‘์ด ๋๋‚ฌ์œผ๋ฉด ์ €์žฅํ•˜๊ณ  ๋ฉ”์ด๋ธ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œ ํ•ด์„œ ์ •์ƒ ์„ค์ • ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด ๋ณด์ž.

mvn clean package

ย 

๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์„ค์ •์ด ์ •์ƒ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด๋‹ค. lib-hello ๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์ €์žฅ์†Œ๊ฐ€ ์ž˜๋ชป ์„ค์ •๋˜์—ˆ๊ฑฐ๋‚˜ ์•„ํ‹ฐํŒฉํŠธ์˜ ์ •๋ณด(groupId, arfitactId, version ๋“ฑ)๊ฐ€ ์ž˜๋ชป ์„ค์ •๋˜์—ˆ์„ ์†Œ์ง€๊ฐ€ ๋†’๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์›์ธ์„ ์ฐพ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋ณด์ž.

  1. ๋„ฅ์„œ์Šค์— ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ €์žฅ์†Œ๋‚ด ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ง์ ‘ ํ™•์ธํ•ด ๋ณด๋ฉด ํŽธ๋ฆฌํ•˜๋‹ค.
  2. ์ €์žฅ์†Œ์˜ URL ์„ ํ™•์ธํ•œ ํ›„์— pom.xml ์— ์„ค์ •ํ•œ ์ •๋ณด์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

๋ณดํ†ต ์ด์ฏค์—์„œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€๋งŒ ๊ณ„์† ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋ชป ์ฐพ๋Š”๋‹ค๋ฉด ๋„ฅ์„œ์Šค์— ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋””ํ”Œ๋กœ์ด ๋˜๊ธฐ ์ „์— ๋ฉ”์ด๋ธ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ด์„œ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

๋ฉ”์ด๋ธ์€ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์•„ํ‹ฐํŒฉํŠธ ์ •๋ณด๋ฅผ ์บ์‹ฑํ•˜๋Š”๋ฐ ๋ฆด๋ฆฌ์Šค ์ €์žฅ์†Œ์ผ ๊ฒฝ์šฐ ์žฌํ™•์ธํ•˜๋Š” ์‹œ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด ๋งค์šฐ ๊ธธ๋‹ค.

๋ฉ”์ด๋ธ ์‹คํ–‰์‹œ ๋„ฅ์„œ์Šค์—๋Š” lib-hello ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ๋ฉ”์ด๋ธ์€ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์•„ํ‹ฐํŒฉํŠธ์— "Not Found" ์ •๋ณด๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ๊ณ„์† ์บ์‹ฑํ•˜๊ณ  ์žˆ๋Š”๋‹ค.

์ดํ›„์— ๋„ฅ์„œ์Šค์— lib-hello ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ๋””ํ”Œ๋กœ์ด๋˜๋„ ๋ฉ”์ด๋ธ์€ ์บ์‹ฑ ์ •๋ณด๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์—†๋‹ค๊ณ  ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  1. ๋กœ์ปฌ ์ €์žฅ์†Œ์˜ ์•„ํ‹ฐํŒฉํŠธ ์บ์‹ฑ ์ •๋ณด ์‚ญ์ œ
    $HOME/.m2/repository ๋ฐ‘์— ๊ทธ๋ฃนID ํ˜•์‹์œผ๋กœ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค. ย ~/.m2/repository/com/example/ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋ฉ”์ด๋ธ์ด ๋„ฅ์„œ์Šค์— ์ƒˆ๋กœ ์ ‘์†ํ•˜๋ฏ€๋กœ ย ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋ฉ”์ด๋ธ ์‹คํ–‰์‹œ ๊ฐ•์ œ ์—…๋ฐ์ดํŠธ ์˜ต์…˜์ธย -U ์ถ”๊ฐ€
    ๋ฉ”์ด๋ธ์˜ ๋กœ์ปฌ ์ €์žฅ์†Œ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก -U ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹คํ–‰

ย 

์ด์ œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ์ •์ƒ ๋นŒ๋“œ๋˜์—ˆ๋‹ค๋ฉด ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์ž„ํฌํŠธ ํ•ด๋ณด์ž.

๋จผ์ € ์„œ๋ธŒ๋ฒ„์ „ ์‚ฌ์šฉ์ž์ด๋‹ค. ๋กœ์ปฌ ์ €์žฅ์†Œ๋Š” ์œ„์—์„œ ์ด๋ฏธ ์ƒ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ์ž„ํฌํŠธ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

  1. hello-webapp ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค.

    cd hello-webappย 

  2. ํ”„๋กœ์ ํŠธ ์†Œ์Šค๋ฅผ ์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ์˜ hello-webapp/trunk ๊ฒฝ๋กœ์— ์ž„ํฌํŠธ ํ•œ๋‹ค.

    svn import .ย file:///${HOME}/svnrepos/hello-webapp/trunkย -m "project import"ย 

  3. ์ •์ƒ์ ์œผ๋กœ ์ž„ํฌํŠธ๋˜์—ˆ๋‹ค๋ฉด ์›๋ž˜ ์†Œ์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ hello-webapp๋Š” ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

    cd ..

    mv hello-webapp hello-webapp-orgย 

  4. ์„œ๋ธŒ๋ฒ„์ „ ์ €์žฅ์†Œ์—์„œ ์†Œ์Šค๋ฅผ ์ฒดํฌ ์•„์›ƒ ํ•ด๋ณธ๋‹ค. ์ฒดํฌ ์•„์›ƒํ•˜๋Š” URL ์€ ์  ํ‚จ์Šค์˜ ์ž‘์—… ์„ค์ •์— ๊ผญ ํ•„์š”ํ•˜๋ฏ€๋กœ ์ž˜ ๊ธฐ์–ตํ•ด ๋‘์ž.

    svn coย file:///${HOME}/svnrepos/hello-webapp/trunkย hello-webappย 

ย 

๊นƒ ์‚ฌ์šฉ์ž๋„ hello-webapp ํ”„๋กœ์ ํŠธ๋ฅผ ๋กœ์ปฌ ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•˜์ž.

  1. hello-webapp ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ๋‹ค.

    cd hello-webappย 

  2. git ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

    git initย 

  3. ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์Šคํ…Œ์ด์ง• ์˜์—ญ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

    git add pom.xml src/ย 

  4. ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ์ปค๋ฐ‹ํ•œ๋‹ค.

    git commit -m "first commit"ย 

์ด์ œ ์  ํ‚จ์Šค์—์„œ ํด๋ก ํ• ์ˆ˜ ์žˆ๊ฒŒ ๋‹ค์Œ ๋กœ์ปฌ ์ €์žฅ์†Œ URL ์„ ๊ธฐ์–ตํ•ด ๋‘์ž. (๊ฒฝ๋กœ๋Š” ๋…์ž๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.)

file:///${HOME}/hello-webapp