ã¯ããã«
ãã®ã¬ã€ãã¯ããœãããŠã§ã¢ãããžã§ã¯ã管çããŒã«ã®Mavenã䜿ã£ãŠJavaã®ãããžã§ã¯ãã®ããã®ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒãå®è¡ããã¯ãŒã¯ãããŒãäœæããæ¹æ³ã玹ä»ããŸãã äœæããã¯ãŒã¯ãããŒã«ãã£ãŠããã«ãªã¯ãšã¹ãã«å¯Ÿããã³ããããããã©ã«ããã©ã³ãã«å¯ŸããŠãã«ããããã¯ãã¹ãã®å€±æãåŒãèµ·ãããããšãèŠãããšãã§ããããã«ãªããŸãããã®ã¢ãããŒãã¯ãã³ãŒããåžžã«å¥å šã§ããããšãä¿èšŒããããã®åœ¹ã«ç«ã¡ãŸãã CIã¯ãŒã¯ãããŒããã£ãã·ã¥ ãã¡ã€ã«ã«æ¡åŒµããŠãã¯ãŒã¯ãããŒã®å®è¡ã«ããææç©ãã¢ããããŒãããããã«ãã§ããŸãã
GitHub ãã¹ããã ã©ã³ããŒã«ã¯ããªã€ã³ã¹ããŒã«ããããœãããŠã§ã¢ã®ããããŒã« ãã£ãã·ã¥ããããJava éçºããã (JDK)ãMaven ãå«ãŸããŠããŸãã JDK ãš Maven ã«é¢ãããœãããŠã§ã¢ãšãã¬ã€ã³ã¹ããŒã«ãããããŒãžã§ã³ã®äžèЧã«ã€ããŠã¯ããGitHub ãã¹ããã ã©ã³ããŒããåç §ããŠãã ããã
åææ¡ä»¶
YAMLãšGitHub Actionsã®æ§æã«éŠŽæãã§ããå¿ èŠããããŸãã 詳现ã«ã€ããŠã¯ã以äžãåç §ããŠãã ãã:
Javaåã³Mavenãã¬ãŒã ã¯ãŒã¯ã®åºæ¬çãªçè§£ãããŠããããšãããããããŸãã 詳现ã«ã€ããŠã¯ãMaven ããã¥ã¡ã³ãã® Maven 䜿çšéå§ã¬ã€ãã«é¢ããããŒãžãåç §ããŠãã ããã
Maven ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒãã®äœ¿çš
ããã«éå§ããã«ã¯ããªããžããªã® .github/workflows
ãã£ã¬ã¯ããªã«ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒãã远å ããŸãã
GitHub ã«ã¯ãã»ãšãã©ã® Maven ãããžã§ã¯ãã® Java ã§åäœãã Maven çšã®ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒããçšæãããŠããŸãã ãã®ã¬ã€ãã®ä»¥éã®ã»ã¯ã·ã§ã³ã§ã¯ããã®ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒããã«ã¹ã¿ãã€ãºããæ¹æ³ã®äŸã瀺ããŸãã
-
GitHub ã§ããªããžããªã®ã¡ã€ã³ ããŒãžã«ç§»åããŸãã
-
ãªããžããªåã®äžã«ãã [ã¢ã¯ã·ã§ã³] ãã¯ãªãã¯ããŸãã
-
ã¯ãŒã¯ãããŒãæ¢ã«ãªããžããªå ã«ããå Žåã¯ã [æ°ããã¯ãŒã¯ãããŒ] ãã¯ãªãã¯ããŸãã
-
[ã¯ãŒã¯ãããŒã®éžæ] ããŒãžã«ã¯ãæšå¥šãããã¯ãŒã¯ãã㌠ãã³ãã¬ãŒãã®éžæã衚瀺ãããŸãã ãJava with Mavenããæ€çŽ¢ããŸãã
-
"Java with Maven" ã¯ãŒã¯ãããŒã§ã[æ§æ] ãã¯ãªãã¯ããŸãã
-
å¿ èŠã«å¿ããŠã¯ãŒã¯ãããŒãç·šéããŸãã ããšãã°ãJava ã®ããŒãžã§ã³ã倿ŽããŸãã
-
[倿Žãã³ããããã] ãã¯ãªãã¯ããŸãã
maven.yml
ã¯ãŒã¯ãã㌠ãã¡ã€ã«ããªããžããªã® .github/workflows
ãã£ã¬ã¯ããªã«è¿œå ãããŸãã
Javaã®ããŒãžã§ã³ãšã¢ãŒããã¯ãã£ã®æå®
ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒãã§ x64 ãã©ãããã©ãŒã çšã® OpenJDK 8 ãå«ãããã« PATH
ãèšå®ããŸãã ç°ãªãããŒãžã§ã³ã® Java ã䜿çšããå Žåããããã¯ç°ãªãã¢ãŒããã¯ã㣠(x64
ãŸã㯠x86
) ãã¿ãŒã²ãããšããå Žåãsetup-java
ã¢ã¯ã·ã§ã³ã䜿ã£ãŠç°ãªã Java ã©ã³ã¿ã€ã ç°å¢ãéžæã§ããŸãã
ããšãã°ãx64 ãã©ãããã©ãŒã ã«å¯Ÿã㊠Adoptium ã«ãã£ãŠæäŸããã JDK ã®ããŒãžã§ã³ 11 ã䜿çšããã«ã¯ãsetup-java
ã¢ã¯ã·ã§ã³ã䜿çšããŠãjava-version
ãdistribution
ãarchitecture
ãã©ã¡ãŒã¿ãŒã '11'
ã'temurin'
ãx64
ã«èšå®ããŸãã
steps: - uses: actions/checkout@v4 - name: Set up JDK 11 for x64 uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' architecture: x64
steps:
- uses: actions/checkout@v4
- name: Set up JDK 11 for x64
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
architecture: x64
詳现ã«ã€ããŠã¯ããsetup-java
ã¢ã¯ã·ã§ã³ããåç
§ããŠãã ããã
ã³ãŒãã®ãã«ããšãã¹ã
ããŒã«ã«ã§äœ¿ãã®ãšåãã³ãã³ãããã³ãŒãã®ãã«ããšãã¹ãã«äœ¿ããŸãã
ã¯ãŒã¯ãã㌠ãã³ãã¬ãŒãã§ã¯ãæ¢å®ã§ package
ã¿ãŒã²ãããå®è¡ãããŸãã ããã©ã«ãã®Mavenã®èšå®ã§ã¯ããã®ã³ãã³ãã¯äŸåé¢ä¿ãããŠã³ããŒãããã¯ã©ã¹ããã«ããããã¹ããå®è¡ããããšãã°JARãã¡ã€ã«ã®ãããªé
åžå¯èœãªãã©ãŒãããã«ã¯ã©ã¹ãããã±ãŒãžããŸãã
ãããžã§ã¯ãã®ãã«ãã«ç°ãªãã³ãã³ãã䜿ã£ãããç°ãªãã¿ãŒã²ããã䜿ãããã®ã§ããã°ãããããæå®ã§ããŸãã ããšãã°ãpom-ci.xml
ãã¡ã€ã«ã§æ§æãããŠãã verify
ã¿ãŒã²ãããå®è¡ã§ããŸãã
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - name: Run the Maven verify phase run: mvn --batch-mode --update-snapshots verify
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- name: Run the Maven verify phase
run: mvn --batch-mode --update-snapshots verify
äŸåé¢ä¿ã®ãã£ãã·ã³ã°
ã¯ãŒã¯ãããŒã®å®è¡é床ãäžããããã«ãäŸåé¢ä¿ããã£ãã·ã¥ããããšãã§ããŸãã å®è¡ã«æåãããšãããŒã«ã«ã® Maven ãªããžããªã¯ãã£ãã·ã¥ã«æ ŒçŽãããŸãã ãã®åŸã®ã¯ãŒã¯ãããŒã®å®è¡ã§ã¯ããã£ãã·ã¥ããªã¹ãã¢ãããäŸåé¢ä¿ããªã¢ãŒãã®MavenãªããžããªããããŠã³ããŒãããå¿
èŠããªããªããŸãã setup-java
ã¢ã¯ã·ã§ã³ã䜿çšããã ãã§äŸåé¢ä¿ããã£ãã·ã¥ããããšããã«ã¹ã¿ã æ§æãé«åºŠãªæ§æã«å¯Ÿã㊠cache
ã¢ã¯ã·ã§ã³ã䜿çšããããšãã§ããŸãã
steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - name: Build with Maven run: mvn --batch-mode --update-snapshots verify
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn --batch-mode --update-snapshots verify
ãã®ã¯ãŒã¯ãããŒã§ã¯ãã©ã³ããŒã®ããŒã ãã£ã¬ã¯ããªã® .m2
ãã£ã¬ã¯ããªã«ããããŒã«ã« Maven ãªããžããªã®å
容ãä¿åãããŸãã ãã£ãã·ã¥ ããŒã¯ pom.xml
ããã·ã¥ãããå
容ã§ãããããpom.xml
ã倿Žãããšãã£ãã·ã¥ã¯ç¡å¹ã«ãªããŸãã
ææç©ãšããŠã®ã¯ãŒã¯ãããŒã®ããŒã¿ã®ããã±ãŒãžå
ãã«ããæåãããã¹ãããã¹ããåŸã«ã¯ãçµæã®Javaã®ããã±ãŒãžããã«ãã®ææç©ãšããŠã¢ããããŒãããããšã«ãªããããããŸããã ããããã°ããã«ããããããã±ãŒãžãã¯ãŒã¯ãããŒã®å®è¡ã®äžéšãšããŠä¿åããããšã«ãªããããããããŠã³ããŒãã§ããããã«ãªããŸãã ææç©ã«ãã£ãŠãPull RequestãããŒãžããåã«ããŒã«ã«ã®ç°å¢ã§ãã¹ãåã³ãããã°ãããããªããŸãã 詳ããã¯ããã¯ãŒã¯ãããŒææç©ã䜿ã£ãããŒã¿ã®æ ŒçŽãšå ±æããã芧ãã ããã
Maven ã§ã¯ãéåžžãJARãEARãWAR ã®ãããªåºåãã¡ã€ã«ã target
ãã£ã¬ã¯ããªã«äœæãããŸãã ããããææç©ãšããŠã¢ããããŒãããããã«ãã¢ããããŒãããææç©ãå«ãæ°ãããã£ã¬ã¯ããªã«ããããã³ããŒã§ããŸãã ããšãã°ãstaging
ãšãããã£ã¬ã¯ããªãäœæã§ããŸãã ãã®åŸãupload-artifact
ã¢ã¯ã·ã§ã³ã䜿çšããŠããã®ãã£ã¬ã¯ããªã®å
容ãã¢ããããŒãã§ããŸãã
steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - run: mvn --batch-mode --update-snapshots verify - run: mkdir staging && cp target/*.jar staging - uses: actions/upload-artifact@v4 with: name: Package path: staging
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
- run: mvn --batch-mode --update-snapshots verify
- run: mkdir staging && cp target/*.jar staging
- uses: actions/upload-artifact@v4
with:
name: Package
path: staging