<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: internetms52</title>
    <description>The latest articles on Forem by internetms52 (@internetms52).</description>
    <link>https://forem.com/internetms52</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F219836%2Ff532a0d8-47fb-4446-aabc-55c2924ad238.png</url>
      <title>Forem: internetms52</title>
      <link>https://forem.com/internetms52</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/internetms52"/>
    <language>en</language>
    <item>
      <title>Java開源開發者指南：構建並部署到Maven Central</title>
      <dc:creator>internetms52</dc:creator>
      <pubDate>Mon, 29 Jul 2024 04:57:09 +0000</pubDate>
      <link>https://forem.com/internetms52/javakai-yuan-kai-fa-zhe-zhi-nan-gou-jian-bing-bu-shu-dao-maven-centralde-liu-cheng-355i</link>
      <guid>https://forem.com/internetms52/javakai-yuan-kai-fa-zhe-zhi-nan-gou-jian-bing-bu-shu-dao-maven-centralde-liu-cheng-355i</guid>
      <description>&lt;h2&gt;
  
  
  目錄
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;創建GitHub帳戶（如果還沒有）&lt;/li&gt;
&lt;li&gt;申請Maven Central Repository帳戶&lt;/li&gt;
&lt;li&gt;Java Doc&lt;/li&gt;
&lt;li&gt;發佈設定(Deployment Config)&lt;/li&gt;
&lt;li&gt;GPG&lt;/li&gt;
&lt;li&gt;開發者資訊(Developer Information)&lt;/li&gt;
&lt;li&gt;源程式碼管理(SCM)&lt;/li&gt;
&lt;li&gt;版權宣告(Licenses)&lt;/li&gt;
&lt;li&gt;範例POM檔&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Sign maven central repository
&lt;/h1&gt;

&lt;h3&gt;
  
  
  註冊Namespace
&lt;/h3&gt;

&lt;p&gt;請務必以github進行登入，這樣就可以有免費的namespace可以用&lt;/p&gt;

&lt;p&gt;&lt;a href="https://central.sonatype.org/register/namespace/#choosing-a-namespace" rel="noopener noreferrer"&gt;原文&lt;/a&gt;&lt;br&gt;
If you do not see this pop-up AND you signed up with GitHub, then Sonatype was able to grant you permissions to the namespace associated with your GitHub identity automatically. As part of your GitHub subscription, GitHub provides you with a github.io domain that reflects your username and allows you to publish GitHub Pages under that domain. Because of this, Sonatype can, in most cases, automatically verify and provision publishing access to a namespace that looks like io.github..&lt;/p&gt;

&lt;h1&gt;
  
  
  Deployment config
&lt;/h1&gt;

&lt;h2&gt;
  
  
  找到namespace
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3ezr5rmqwn6u3sgufd7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3ezr5rmqwn6u3sgufd7.png" alt="Image description" width="453" height="281"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjdd56uvxse25i9d37lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjdd56uvxse25i9d37lv.png" alt="Image description" width="349" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  務必確保資料一致
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;groupId&amp;gt;io.github.internetms52&amp;lt;/groupId&amp;gt;
&amp;lt;artifactId&amp;gt;object-pool&amp;lt;/artifactId&amp;gt;
&amp;lt;version&amp;gt;0.1.3&amp;lt;/version&amp;gt;
&amp;lt;name&amp;gt;object-pool&amp;lt;/name&amp;gt;
&amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;
&amp;lt;url&amp;gt;https://github.com/internetms52/object-pool-maven-lib&amp;lt;/url&amp;gt;
&amp;lt;description&amp;gt;This is a library that implements an Object Pool, and it supports nested object creation as well as constructor specification.&amp;lt;/description&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Generate User Token
&lt;/h2&gt;

&lt;p&gt;View Account &amp;gt; Generate User Token&lt;br&gt;
完成後就會取得settings.xml所需的資訊&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6dh0iobmmaxce41xlst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6dh0iobmmaxce41xlst.png" alt="Image description" width="591" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  指定server(settings.xml)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;settings&amp;gt;
    &amp;lt;servers&amp;gt;
        &amp;lt;server&amp;gt;
            &amp;lt;id&amp;gt;central&amp;lt;/id&amp;gt;
            &amp;lt;username&amp;gt;XXXXXX&amp;lt;/username&amp;gt;
            &amp;lt;password&amp;gt;YYYYYY&amp;lt;/password&amp;gt;
        &amp;lt;/server&amp;gt;
    &amp;lt;/servers&amp;gt;
&amp;lt;/settings&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  指定maven central repository server設定(pom.xml)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.sonatype.central&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;central-publishing-maven-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;0.5.0&amp;lt;/version&amp;gt;
    &amp;lt;extensions&amp;gt;true&amp;lt;/extensions&amp;gt;
    &amp;lt;configuration&amp;gt;
        &amp;lt;publishingServerId&amp;gt;central&amp;lt;/publishingServerId&amp;gt;
    &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Java doc
&lt;/h1&gt;

&lt;h2&gt;
  
  
  使用Maven Plugin產生Java Doc
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;maven-javadoc-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.2.0&amp;lt;/version&amp;gt;
    &amp;lt;executions&amp;gt;
        &amp;lt;execution&amp;gt;
            &amp;lt;id&amp;gt;attach-javadocs&amp;lt;/id&amp;gt;
            &amp;lt;goals&amp;gt;
                &amp;lt;goal&amp;gt;jar&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
        &amp;lt;/execution&amp;gt;
    &amp;lt;/executions&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  GPG
&lt;/h1&gt;

&lt;h2&gt;
  
  
  產生GPG Key Pair
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install gnupg
gpg --full-generate-key
gpg --list-keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  GPG簽名plugin
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;plugin&amp;gt;
    &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;maven-gpg-plugin&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.0.1&amp;lt;/version&amp;gt;
    &amp;lt;executions&amp;gt;
        &amp;lt;execution&amp;gt;
            &amp;lt;id&amp;gt;sign-artifacts&amp;lt;/id&amp;gt;
            &amp;lt;phase&amp;gt;verify&amp;lt;/phase&amp;gt;
            &amp;lt;goals&amp;gt;
                &amp;lt;goal&amp;gt;sign&amp;lt;/goal&amp;gt;
            &amp;lt;/goals&amp;gt;
            &amp;lt;configuration&amp;gt;
                &amp;lt;gpgArguments&amp;gt;
                    &amp;lt;arg&amp;gt;--pinentry-mode&amp;lt;/arg&amp;gt;
                    &amp;lt;arg&amp;gt;loopback&amp;lt;/arg&amp;gt;
                &amp;lt;/gpgArguments&amp;gt;
            &amp;lt;/configuration&amp;gt;
        &amp;lt;/execution&amp;gt;
    &amp;lt;/executions&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  上傳GPG公鑰
&lt;/h2&gt;

&lt;p&gt;GPG的公鑰server有兩個比較有名的&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pgp.mit.edu&lt;/li&gt;
&lt;li&gt;keyserver.ubuntu.com
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg --keyserver hkp://pgp.mit.edu --send-keys F1BD06AB06C36BD5EB53B6E8710DEC40549547D2
gpg: sending key 710DEC40549547D2 to hkp://pgp.mit.edu

gpg --keyserver hkp://keyserver.ubuntu.com --send-keys F1BD06AB06C36BD5EB53B6E8710DEC40549547D2
gpg: sending key 710DEC40549547D2 to hkp://keyserver.ubuntu.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Developer info
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;developers&amp;gt;
    &amp;lt;developer&amp;gt;
        &amp;lt;name&amp;gt;LU.YU HSIN&amp;lt;/name&amp;gt;
        &amp;lt;email&amp;gt;yourmail@mail.com&amp;lt;/email&amp;gt;
        &amp;lt;organization&amp;gt;internetms52&amp;lt;/organization&amp;gt;
        &amp;lt;organizationUrl&amp;gt;https://github.com/internetms52/object-pool-maven-lib&amp;lt;/organizationUrl&amp;gt;
    &amp;lt;/developer&amp;gt;
&amp;lt;/developers&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SCM
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;scm&amp;gt;
    &amp;lt;connection&amp;gt;scm:git:git@github.com:internetms52/object-pool-maven-lib.git&amp;lt;/connection&amp;gt;
    &amp;lt;developerConnection&amp;gt;scm:git:git@github.com:internetms52/object-pool-maven-lib.git&amp;lt;/developerConnection&amp;gt;
    &amp;lt;url&amp;gt;https://github.com/internetms52/object-pool-maven-lib&amp;lt;/url&amp;gt;
&amp;lt;/scm&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Licenses
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;licenses&amp;gt;
    &amp;lt;license&amp;gt;
        &amp;lt;name&amp;gt;Apache License, Version 2.0&amp;lt;/name&amp;gt;
        &amp;lt;url&amp;gt;http://www.apache.org/licenses/LICENSE-2.0.txt&amp;lt;/url&amp;gt;
        &amp;lt;distribution&amp;gt;repo&amp;lt;/distribution&amp;gt;
    &amp;lt;/license&amp;gt;
&amp;lt;/licenses&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example POM
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/internetms52/object-pool-maven-lib/blob/main/maven-lib/pom.xml" rel="noopener noreferrer"&gt;object-pool-maven-lib&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
