[{"data":1,"prerenderedAt":1075},["ShallowReactive",2],{"tag-maven":3},[4],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"date":11,"layout":12,"subtitle":13,"image":14,"optimized_image":14,"category":15,"tags":16,"author":21,"paginate":7,"body":22,"_type":1069,"_id":1070,"_source":1071,"_file":1072,"_stem":1073,"_extension":1074},"/posts/maven-and-github-actions","posts",false,"","Automating Java Builds with Maven and GitHub Actions CI/CD","Learn how to set up automated Java build pipelines using Maven and GitHub Actions, including practical examples and detailed instructions.","2024-06-15T11:00:00.000Z","post","A Step-by-Step Guide to Continuous Integration and Deployment","/assets/img/uploads/java-maven-github-actions.png","code",[15,17,18,19,20],"java","maven","github-actions","cicd","jaimedearcos",{"type":23,"children":24,"toc":1058},"root",[25,52,59,82,88,93,102,115,474,480,539,545,550,711,717,722,794,806,812,817,879,891,897,920,926,931,986,1001,1007,1012,1019,1052],{"type":26,"tag":27,"props":28,"children":29},"element","blockquote",{},[30],{"type":26,"tag":31,"props":32,"children":33},"p",{},[34,37,43,45,50],{"type":35,"value":36},"text","Continuous Integration and Continuous Deployment (CI/CD) streamline development workflows, improve software quality, and accelerate delivery. This tutorial guides you through setting up automated Java builds using ",{"type":26,"tag":38,"props":39,"children":40},"strong",{},[41],{"type":35,"value":42},"Maven",{"type":35,"value":44}," and ",{"type":26,"tag":38,"props":46,"children":47},{},[48],{"type":35,"value":49},"GitHub Actions",{"type":35,"value":51},".",{"type":26,"tag":53,"props":54,"children":56},"h2",{"id":55},"prerequisites",[57],{"type":35,"value":58},"Prerequisites",{"type":26,"tag":60,"props":61,"children":62},"ul",{},[63,77],{"type":26,"tag":64,"props":65,"children":66},"li",{},[67,69,75],{"type":35,"value":68},"A Java project with Maven configured (",{"type":26,"tag":15,"props":70,"children":72},{"className":71},[],[73],{"type":35,"value":74},"pom.xml",{"type":35,"value":76},").",{"type":26,"tag":64,"props":78,"children":79},{},[80],{"type":35,"value":81},"GitHub repository.",{"type":26,"tag":53,"props":83,"children":85},{"id":84},"step-1-setting-up-your-github-actions-workflow",[86],{"type":35,"value":87},"Step 1: Setting Up Your GitHub Actions Workflow",{"type":26,"tag":31,"props":89,"children":90},{},[91],{"type":35,"value":92},"In your repository, create the following directory structure:",{"type":26,"tag":94,"props":95,"children":97},"pre",{"code":96},".github/workflows/\n",[98],{"type":26,"tag":15,"props":99,"children":100},{"__ignoreMap":8},[101],{"type":35,"value":96},{"type":26,"tag":31,"props":103,"children":104},{},[105,107,113],{"type":35,"value":106},"Create a new file named ",{"type":26,"tag":15,"props":108,"children":110},{"className":109},[],[111],{"type":35,"value":112},"maven-ci.yml",{"type":35,"value":114}," within this directory:",{"type":26,"tag":94,"props":116,"children":120},{"code":117,"language":118,"meta":8,"className":119,"style":8},"name: Maven CI\n\non:\n  push:\n    branches: [ \"main\" ]\n  pull_request:\n    branches: [ \"main\" ]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n      - name: Set up JDK 21\n        uses: actions/setup-java@v4\n        with:\n          java-version: '21'\n          distribution: 'temurin'\n\n      - name: Build with Maven\n        run: mvn clean install\n","yml","language-yml shiki shiki-themes github-dark github-light",[121],{"type":26,"tag":15,"props":122,"children":123},{"__ignoreMap":8},[124,148,158,173,186,210,223,243,251,264,277,295,303,316,339,360,378,391,409,427,435,456],{"type":26,"tag":125,"props":126,"children":129},"span",{"class":127,"line":128},"line",1,[130,136,142],{"type":26,"tag":125,"props":131,"children":133},{"style":132},"--shiki-default:#85E89D;--shiki-light:#22863A",[134],{"type":35,"value":135},"name",{"type":26,"tag":125,"props":137,"children":139},{"style":138},"--shiki-default:#E1E4E8;--shiki-light:#24292E",[140],{"type":35,"value":141},": ",{"type":26,"tag":125,"props":143,"children":145},{"style":144},"--shiki-default:#9ECBFF;--shiki-light:#032F62",[146],{"type":35,"value":147},"Maven CI\n",{"type":26,"tag":125,"props":149,"children":151},{"class":127,"line":150},2,[152],{"type":26,"tag":125,"props":153,"children":155},{"emptyLinePlaceholder":154},true,[156],{"type":35,"value":157},"\n",{"type":26,"tag":125,"props":159,"children":161},{"class":127,"line":160},3,[162,168],{"type":26,"tag":125,"props":163,"children":165},{"style":164},"--shiki-default:#79B8FF;--shiki-light:#005CC5",[166],{"type":35,"value":167},"on",{"type":26,"tag":125,"props":169,"children":170},{"style":138},[171],{"type":35,"value":172},":\n",{"type":26,"tag":125,"props":174,"children":176},{"class":127,"line":175},4,[177,182],{"type":26,"tag":125,"props":178,"children":179},{"style":132},[180],{"type":35,"value":181},"  push",{"type":26,"tag":125,"props":183,"children":184},{"style":138},[185],{"type":35,"value":172},{"type":26,"tag":125,"props":187,"children":189},{"class":127,"line":188},5,[190,195,200,205],{"type":26,"tag":125,"props":191,"children":192},{"style":132},[193],{"type":35,"value":194},"    branches",{"type":26,"tag":125,"props":196,"children":197},{"style":138},[198],{"type":35,"value":199},": [ ",{"type":26,"tag":125,"props":201,"children":202},{"style":144},[203],{"type":35,"value":204},"\"main\"",{"type":26,"tag":125,"props":206,"children":207},{"style":138},[208],{"type":35,"value":209}," ]\n",{"type":26,"tag":125,"props":211,"children":213},{"class":127,"line":212},6,[214,219],{"type":26,"tag":125,"props":215,"children":216},{"style":132},[217],{"type":35,"value":218},"  pull_request",{"type":26,"tag":125,"props":220,"children":221},{"style":138},[222],{"type":35,"value":172},{"type":26,"tag":125,"props":224,"children":226},{"class":127,"line":225},7,[227,231,235,239],{"type":26,"tag":125,"props":228,"children":229},{"style":132},[230],{"type":35,"value":194},{"type":26,"tag":125,"props":232,"children":233},{"style":138},[234],{"type":35,"value":199},{"type":26,"tag":125,"props":236,"children":237},{"style":144},[238],{"type":35,"value":204},{"type":26,"tag":125,"props":240,"children":241},{"style":138},[242],{"type":35,"value":209},{"type":26,"tag":125,"props":244,"children":246},{"class":127,"line":245},8,[247],{"type":26,"tag":125,"props":248,"children":249},{"emptyLinePlaceholder":154},[250],{"type":35,"value":157},{"type":26,"tag":125,"props":252,"children":254},{"class":127,"line":253},9,[255,260],{"type":26,"tag":125,"props":256,"children":257},{"style":132},[258],{"type":35,"value":259},"jobs",{"type":26,"tag":125,"props":261,"children":262},{"style":138},[263],{"type":35,"value":172},{"type":26,"tag":125,"props":265,"children":267},{"class":127,"line":266},10,[268,273],{"type":26,"tag":125,"props":269,"children":270},{"style":132},[271],{"type":35,"value":272},"  build",{"type":26,"tag":125,"props":274,"children":275},{"style":138},[276],{"type":35,"value":172},{"type":26,"tag":125,"props":278,"children":280},{"class":127,"line":279},11,[281,286,290],{"type":26,"tag":125,"props":282,"children":283},{"style":132},[284],{"type":35,"value":285},"    runs-on",{"type":26,"tag":125,"props":287,"children":288},{"style":138},[289],{"type":35,"value":141},{"type":26,"tag":125,"props":291,"children":292},{"style":144},[293],{"type":35,"value":294},"ubuntu-latest\n",{"type":26,"tag":125,"props":296,"children":298},{"class":127,"line":297},12,[299],{"type":26,"tag":125,"props":300,"children":301},{"emptyLinePlaceholder":154},[302],{"type":35,"value":157},{"type":26,"tag":125,"props":304,"children":306},{"class":127,"line":305},13,[307,312],{"type":26,"tag":125,"props":308,"children":309},{"style":132},[310],{"type":35,"value":311},"    steps",{"type":26,"tag":125,"props":313,"children":314},{"style":138},[315],{"type":35,"value":172},{"type":26,"tag":125,"props":317,"children":319},{"class":127,"line":318},14,[320,325,330,334],{"type":26,"tag":125,"props":321,"children":322},{"style":138},[323],{"type":35,"value":324},"      - ",{"type":26,"tag":125,"props":326,"children":327},{"style":132},[328],{"type":35,"value":329},"uses",{"type":26,"tag":125,"props":331,"children":332},{"style":138},[333],{"type":35,"value":141},{"type":26,"tag":125,"props":335,"children":336},{"style":144},[337],{"type":35,"value":338},"actions/checkout@v4\n",{"type":26,"tag":125,"props":340,"children":342},{"class":127,"line":341},15,[343,347,351,355],{"type":26,"tag":125,"props":344,"children":345},{"style":138},[346],{"type":35,"value":324},{"type":26,"tag":125,"props":348,"children":349},{"style":132},[350],{"type":35,"value":135},{"type":26,"tag":125,"props":352,"children":353},{"style":138},[354],{"type":35,"value":141},{"type":26,"tag":125,"props":356,"children":357},{"style":144},[358],{"type":35,"value":359},"Set up JDK 21\n",{"type":26,"tag":125,"props":361,"children":363},{"class":127,"line":362},16,[364,369,373],{"type":26,"tag":125,"props":365,"children":366},{"style":132},[367],{"type":35,"value":368},"        uses",{"type":26,"tag":125,"props":370,"children":371},{"style":138},[372],{"type":35,"value":141},{"type":26,"tag":125,"props":374,"children":375},{"style":144},[376],{"type":35,"value":377},"actions/setup-java@v4\n",{"type":26,"tag":125,"props":379,"children":381},{"class":127,"line":380},17,[382,387],{"type":26,"tag":125,"props":383,"children":384},{"style":132},[385],{"type":35,"value":386},"        with",{"type":26,"tag":125,"props":388,"children":389},{"style":138},[390],{"type":35,"value":172},{"type":26,"tag":125,"props":392,"children":394},{"class":127,"line":393},18,[395,400,404],{"type":26,"tag":125,"props":396,"children":397},{"style":132},[398],{"type":35,"value":399},"          java-version",{"type":26,"tag":125,"props":401,"children":402},{"style":138},[403],{"type":35,"value":141},{"type":26,"tag":125,"props":405,"children":406},{"style":144},[407],{"type":35,"value":408},"'21'\n",{"type":26,"tag":125,"props":410,"children":412},{"class":127,"line":411},19,[413,418,422],{"type":26,"tag":125,"props":414,"children":415},{"style":132},[416],{"type":35,"value":417},"          distribution",{"type":26,"tag":125,"props":419,"children":420},{"style":138},[421],{"type":35,"value":141},{"type":26,"tag":125,"props":423,"children":424},{"style":144},[425],{"type":35,"value":426},"'temurin'\n",{"type":26,"tag":125,"props":428,"children":430},{"class":127,"line":429},20,[431],{"type":26,"tag":125,"props":432,"children":433},{"emptyLinePlaceholder":154},[434],{"type":35,"value":157},{"type":26,"tag":125,"props":436,"children":438},{"class":127,"line":437},21,[439,443,447,451],{"type":26,"tag":125,"props":440,"children":441},{"style":138},[442],{"type":35,"value":324},{"type":26,"tag":125,"props":444,"children":445},{"style":132},[446],{"type":35,"value":135},{"type":26,"tag":125,"props":448,"children":449},{"style":138},[450],{"type":35,"value":141},{"type":26,"tag":125,"props":452,"children":453},{"style":144},[454],{"type":35,"value":455},"Build with Maven\n",{"type":26,"tag":125,"props":457,"children":459},{"class":127,"line":458},22,[460,465,469],{"type":26,"tag":125,"props":461,"children":462},{"style":132},[463],{"type":35,"value":464},"        run",{"type":26,"tag":125,"props":466,"children":467},{"style":138},[468],{"type":35,"value":141},{"type":26,"tag":125,"props":470,"children":471},{"style":144},[472],{"type":35,"value":473},"mvn clean install\n",{"type":26,"tag":53,"props":475,"children":477},{"id":476},"step-2-understanding-the-workflow",[478],{"type":35,"value":479},"Step 2: Understanding the Workflow",{"type":26,"tag":60,"props":481,"children":482},{},[483,501,511,521],{"type":26,"tag":64,"props":484,"children":485},{},[486,491,493,499],{"type":26,"tag":38,"props":487,"children":488},{},[489],{"type":35,"value":490},"Trigger:",{"type":35,"value":492}," Activated on push or pull request to the ",{"type":26,"tag":15,"props":494,"children":496},{"className":495},[],[497],{"type":35,"value":498},"main",{"type":35,"value":500}," branch.",{"type":26,"tag":64,"props":502,"children":503},{},[504,509],{"type":26,"tag":38,"props":505,"children":506},{},[507],{"type":35,"value":508},"Checkout:",{"type":35,"value":510}," Retrieves the source code from your repository.",{"type":26,"tag":64,"props":512,"children":513},{},[514,519],{"type":26,"tag":38,"props":515,"children":516},{},[517],{"type":35,"value":518},"JDK Setup:",{"type":35,"value":520}," Installs Java 21 from Temurin.",{"type":26,"tag":64,"props":522,"children":523},{},[524,529,531,537],{"type":26,"tag":38,"props":525,"children":526},{},[527],{"type":35,"value":528},"Maven Build:",{"type":35,"value":530}," Executes Maven goals (",{"type":26,"tag":15,"props":532,"children":534},{"className":533},[],[535],{"type":35,"value":536},"clean install",{"type":35,"value":538},") to compile, test, and package your Java application.",{"type":26,"tag":53,"props":540,"children":542},{"id":541},"step-3-add-maven-test-reports",[543],{"type":35,"value":544},"Step 3: Add Maven Test Reports",{"type":26,"tag":31,"props":546,"children":547},{},[548],{"type":35,"value":549},"Enhance your workflow by generating and uploading test reports:",{"type":26,"tag":94,"props":551,"children":553},{"code":552,"language":118,"meta":8,"className":119,"style":8},"- name: Run tests and upload reports\n  run: |\n    mvn test\n  continue-on-error: true\n\n- name: Upload test report\n  uses: actions/upload-artifact@v4\n  with:\n    name: test-report\n    path: target/surefire-reports/\n",[554],{"type":26,"tag":15,"props":555,"children":556},{"__ignoreMap":8},[557,578,596,604,621,628,648,665,677,694],{"type":26,"tag":125,"props":558,"children":559},{"class":127,"line":128},[560,565,569,573],{"type":26,"tag":125,"props":561,"children":562},{"style":138},[563],{"type":35,"value":564},"- ",{"type":26,"tag":125,"props":566,"children":567},{"style":132},[568],{"type":35,"value":135},{"type":26,"tag":125,"props":570,"children":571},{"style":138},[572],{"type":35,"value":141},{"type":26,"tag":125,"props":574,"children":575},{"style":144},[576],{"type":35,"value":577},"Run tests and upload reports\n",{"type":26,"tag":125,"props":579,"children":580},{"class":127,"line":150},[581,586,590],{"type":26,"tag":125,"props":582,"children":583},{"style":132},[584],{"type":35,"value":585},"  run",{"type":26,"tag":125,"props":587,"children":588},{"style":138},[589],{"type":35,"value":141},{"type":26,"tag":125,"props":591,"children":593},{"style":592},"--shiki-default:#F97583;--shiki-light:#D73A49",[594],{"type":35,"value":595},"|\n",{"type":26,"tag":125,"props":597,"children":598},{"class":127,"line":160},[599],{"type":26,"tag":125,"props":600,"children":601},{"style":144},[602],{"type":35,"value":603},"    mvn test\n",{"type":26,"tag":125,"props":605,"children":606},{"class":127,"line":175},[607,612,616],{"type":26,"tag":125,"props":608,"children":609},{"style":132},[610],{"type":35,"value":611},"  continue-on-error",{"type":26,"tag":125,"props":613,"children":614},{"style":138},[615],{"type":35,"value":141},{"type":26,"tag":125,"props":617,"children":618},{"style":164},[619],{"type":35,"value":620},"true\n",{"type":26,"tag":125,"props":622,"children":623},{"class":127,"line":188},[624],{"type":26,"tag":125,"props":625,"children":626},{"emptyLinePlaceholder":154},[627],{"type":35,"value":157},{"type":26,"tag":125,"props":629,"children":630},{"class":127,"line":212},[631,635,639,643],{"type":26,"tag":125,"props":632,"children":633},{"style":138},[634],{"type":35,"value":564},{"type":26,"tag":125,"props":636,"children":637},{"style":132},[638],{"type":35,"value":135},{"type":26,"tag":125,"props":640,"children":641},{"style":138},[642],{"type":35,"value":141},{"type":26,"tag":125,"props":644,"children":645},{"style":144},[646],{"type":35,"value":647},"Upload test report\n",{"type":26,"tag":125,"props":649,"children":650},{"class":127,"line":225},[651,656,660],{"type":26,"tag":125,"props":652,"children":653},{"style":132},[654],{"type":35,"value":655},"  uses",{"type":26,"tag":125,"props":657,"children":658},{"style":138},[659],{"type":35,"value":141},{"type":26,"tag":125,"props":661,"children":662},{"style":144},[663],{"type":35,"value":664},"actions/upload-artifact@v4\n",{"type":26,"tag":125,"props":666,"children":667},{"class":127,"line":245},[668,673],{"type":26,"tag":125,"props":669,"children":670},{"style":132},[671],{"type":35,"value":672},"  with",{"type":26,"tag":125,"props":674,"children":675},{"style":138},[676],{"type":35,"value":172},{"type":26,"tag":125,"props":678,"children":679},{"class":127,"line":253},[680,685,689],{"type":26,"tag":125,"props":681,"children":682},{"style":132},[683],{"type":35,"value":684},"    name",{"type":26,"tag":125,"props":686,"children":687},{"style":138},[688],{"type":35,"value":141},{"type":26,"tag":125,"props":690,"children":691},{"style":144},[692],{"type":35,"value":693},"test-report\n",{"type":26,"tag":125,"props":695,"children":696},{"class":127,"line":266},[697,702,706],{"type":26,"tag":125,"props":698,"children":699},{"style":132},[700],{"type":35,"value":701},"    path",{"type":26,"tag":125,"props":703,"children":704},{"style":138},[705],{"type":35,"value":141},{"type":26,"tag":125,"props":707,"children":708},{"style":144},[709],{"type":35,"value":710},"target/surefire-reports/\n",{"type":26,"tag":53,"props":712,"children":714},{"id":713},"step-4-deploy-artifacts-optional",[715],{"type":35,"value":716},"Step 4: Deploy Artifacts (Optional)",{"type":26,"tag":31,"props":718,"children":719},{},[720],{"type":35,"value":721},"To automatically deploy artifacts, include the deployment steps:",{"type":26,"tag":94,"props":723,"children":725},{"code":724,"language":118,"meta":8,"className":119,"style":8},"- name: Deploy package\n  env:\n    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n  run: mvn deploy\n",[726],{"type":26,"tag":15,"props":727,"children":728},{"__ignoreMap":8},[729,749,761,778],{"type":26,"tag":125,"props":730,"children":731},{"class":127,"line":128},[732,736,740,744],{"type":26,"tag":125,"props":733,"children":734},{"style":138},[735],{"type":35,"value":564},{"type":26,"tag":125,"props":737,"children":738},{"style":132},[739],{"type":35,"value":135},{"type":26,"tag":125,"props":741,"children":742},{"style":138},[743],{"type":35,"value":141},{"type":26,"tag":125,"props":745,"children":746},{"style":144},[747],{"type":35,"value":748},"Deploy package\n",{"type":26,"tag":125,"props":750,"children":751},{"class":127,"line":150},[752,757],{"type":26,"tag":125,"props":753,"children":754},{"style":132},[755],{"type":35,"value":756},"  env",{"type":26,"tag":125,"props":758,"children":759},{"style":138},[760],{"type":35,"value":172},{"type":26,"tag":125,"props":762,"children":763},{"class":127,"line":160},[764,769,773],{"type":26,"tag":125,"props":765,"children":766},{"style":132},[767],{"type":35,"value":768},"    GITHUB_TOKEN",{"type":26,"tag":125,"props":770,"children":771},{"style":138},[772],{"type":35,"value":141},{"type":26,"tag":125,"props":774,"children":775},{"style":144},[776],{"type":35,"value":777},"${{ secrets.GITHUB_TOKEN }}\n",{"type":26,"tag":125,"props":779,"children":780},{"class":127,"line":175},[781,785,789],{"type":26,"tag":125,"props":782,"children":783},{"style":132},[784],{"type":35,"value":585},{"type":26,"tag":125,"props":786,"children":787},{"style":138},[788],{"type":35,"value":141},{"type":26,"tag":125,"props":790,"children":791},{"style":144},[792],{"type":35,"value":793},"mvn deploy\n",{"type":26,"tag":31,"props":795,"children":796},{},[797,799,804],{"type":35,"value":798},"Ensure your ",{"type":26,"tag":15,"props":800,"children":802},{"className":801},[],[803],{"type":35,"value":74},{"type":35,"value":805}," is configured for deployment (e.g., GitHub Packages).",{"type":26,"tag":53,"props":807,"children":809},{"id":808},"step-5-committing-and-running-your-workflow",[810],{"type":35,"value":811},"Step 5: Committing and Running Your Workflow",{"type":26,"tag":31,"props":813,"children":814},{},[815],{"type":35,"value":816},"Commit your workflow file and push the changes:",{"type":26,"tag":94,"props":818,"children":822},{"code":819,"language":820,"meta":8,"className":821,"style":8},"git add .github/workflows/maven-ci.yml\ngit commit -m \"Add Maven CI GitHub Actions workflow\"\ngit push\n","bash","language-bash shiki shiki-themes github-dark github-light",[823],{"type":26,"tag":15,"props":824,"children":825},{"__ignoreMap":8},[826,845,867],{"type":26,"tag":125,"props":827,"children":828},{"class":127,"line":128},[829,835,840],{"type":26,"tag":125,"props":830,"children":832},{"style":831},"--shiki-default:#B392F0;--shiki-light:#6F42C1",[833],{"type":35,"value":834},"git",{"type":26,"tag":125,"props":836,"children":837},{"style":144},[838],{"type":35,"value":839}," add",{"type":26,"tag":125,"props":841,"children":842},{"style":144},[843],{"type":35,"value":844}," .github/workflows/maven-ci.yml\n",{"type":26,"tag":125,"props":846,"children":847},{"class":127,"line":150},[848,852,857,862],{"type":26,"tag":125,"props":849,"children":850},{"style":831},[851],{"type":35,"value":834},{"type":26,"tag":125,"props":853,"children":854},{"style":144},[855],{"type":35,"value":856}," commit",{"type":26,"tag":125,"props":858,"children":859},{"style":164},[860],{"type":35,"value":861}," -m",{"type":26,"tag":125,"props":863,"children":864},{"style":144},[865],{"type":35,"value":866}," \"Add Maven CI GitHub Actions workflow\"\n",{"type":26,"tag":125,"props":868,"children":869},{"class":127,"line":160},[870,874],{"type":26,"tag":125,"props":871,"children":872},{"style":831},[873],{"type":35,"value":834},{"type":26,"tag":125,"props":875,"children":876},{"style":144},[877],{"type":35,"value":878}," push\n",{"type":26,"tag":31,"props":880,"children":881},{},[882,884,889],{"type":35,"value":883},"Navigate to the ",{"type":26,"tag":38,"props":885,"children":886},{},[887],{"type":35,"value":888},"Actions",{"type":35,"value":890}," tab on your GitHub repository to view and monitor your pipeline.",{"type":26,"tag":53,"props":892,"children":894},{"id":893},"advantages-of-automating-java-builds",[895],{"type":35,"value":896},"Advantages of Automating Java Builds",{"type":26,"tag":60,"props":898,"children":899},{},[900,905,910,915],{"type":26,"tag":64,"props":901,"children":902},{},[903],{"type":35,"value":904},"Rapid feedback on code integration.",{"type":26,"tag":64,"props":906,"children":907},{},[908],{"type":35,"value":909},"Early identification of bugs and issues.",{"type":26,"tag":64,"props":911,"children":912},{},[913],{"type":35,"value":914},"Automated testing and deployment.",{"type":26,"tag":64,"props":916,"children":917},{},[918],{"type":35,"value":919},"Improved reliability and consistency.",{"type":26,"tag":53,"props":921,"children":923},{"id":922},"pricing",[924],{"type":35,"value":925},"Pricing",{"type":26,"tag":31,"props":927,"children":928},{},[929],{"type":35,"value":930},"GitHub Actions offers a generous free tier suitable for most projects:",{"type":26,"tag":60,"props":932,"children":933},{},[934,960],{"type":26,"tag":64,"props":935,"children":936},{},[937,942],{"type":26,"tag":38,"props":938,"children":939},{},[940],{"type":35,"value":941},"Free Tier:",{"type":26,"tag":60,"props":943,"children":944},{},[945,950,955],{"type":26,"tag":64,"props":946,"children":947},{},[948],{"type":35,"value":949},"2,000 minutes per month (private repositories).",{"type":26,"tag":64,"props":951,"children":952},{},[953],{"type":35,"value":954},"Unlimited minutes for public repositories.",{"type":26,"tag":64,"props":956,"children":957},{},[958],{"type":35,"value":959},"Free usage of GitHub-hosted runners for most common tasks.",{"type":26,"tag":64,"props":961,"children":962},{},[963,968],{"type":26,"tag":38,"props":964,"children":965},{},[966],{"type":35,"value":967},"Additional Minutes:",{"type":26,"tag":60,"props":969,"children":970},{},[971,976,981],{"type":26,"tag":64,"props":972,"children":973},{},[974],{"type":35,"value":975},"$0.008 per minute for Linux runners.",{"type":26,"tag":64,"props":977,"children":978},{},[979],{"type":35,"value":980},"$0.016 per minute for Windows runners.",{"type":26,"tag":64,"props":982,"children":983},{},[984],{"type":35,"value":985},"$0.08 per minute for macOS runners.",{"type":26,"tag":31,"props":987,"children":988},{},[989,991,1000],{"type":35,"value":990},"For detailed and up-to-date pricing, visit ",{"type":26,"tag":992,"props":993,"children":997},"a",{"href":994,"rel":995},"https://github.com/pricing#actions",[996],"nofollow",[998],{"type":35,"value":999},"GitHub Actions Pricing",{"type":35,"value":51},{"type":26,"tag":53,"props":1002,"children":1004},{"id":1003},"conclusion",[1005],{"type":35,"value":1006},"Conclusion",{"type":26,"tag":31,"props":1008,"children":1009},{},[1010],{"type":35,"value":1011},"Using GitHub Actions with Maven provides an efficient and robust CI/CD pipeline, significantly improving your development lifecycle. Start implementing these practices today and streamline your Java application delivery.",{"type":26,"tag":1013,"props":1014,"children":1016},"h1",{"id":1015},"further-reading",[1017],{"type":35,"value":1018},"Further Reading",{"type":26,"tag":60,"props":1020,"children":1021},{},[1022,1032,1042],{"type":26,"tag":64,"props":1023,"children":1024},{},[1025],{"type":26,"tag":992,"props":1026,"children":1029},{"href":1027,"rel":1028},"https://docs.github.com/en/actions",[996],[1030],{"type":35,"value":1031},"GitHub Actions Documentation",{"type":26,"tag":64,"props":1033,"children":1034},{},[1035],{"type":26,"tag":992,"props":1036,"children":1039},{"href":1037,"rel":1038},"https://maven.apache.org/guides/",[996],[1040],{"type":35,"value":1041},"Maven Official Documentation",{"type":26,"tag":64,"props":1043,"children":1044},{},[1045],{"type":26,"tag":992,"props":1046,"children":1049},{"href":1047,"rel":1048},"https://docs.github.com/en/packages/working-with-a-github-packages-registry",[996],[1050],{"type":35,"value":1051},"Publishing Java Packages with GitHub Packages",{"type":26,"tag":1053,"props":1054,"children":1055},"style",{},[1056],{"type":35,"value":1057},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}",{"title":8,"searchDepth":150,"depth":150,"links":1059},[1060,1061,1062,1063,1064,1065,1066,1067,1068],{"id":55,"depth":150,"text":58},{"id":84,"depth":150,"text":87},{"id":476,"depth":150,"text":479},{"id":541,"depth":150,"text":544},{"id":713,"depth":150,"text":716},{"id":808,"depth":150,"text":811},{"id":893,"depth":150,"text":896},{"id":922,"depth":150,"text":925},{"id":1003,"depth":150,"text":1006},"markdown","content:posts:maven-and-github-actions.md","content","posts/maven-and-github-actions.md","posts/maven-and-github-actions","md",1790510065076]