1"use strict";(self.webpackChunkyolo=self.webpackChunkyolo||[]).push([["1847"],{7813(e,a,r){r.r(a),r.d(a,{metadata:()=>n,default:()=>h,frontMatter:()=>d,contentTitle:()=>o,toc:()=>l,assets:()=>t});var n=JSON.parse('{"id":"notes/develop/java/java-publish-library-with-source-and-doc","title":"Java/Android \u53D1\u5E03 library \u5305\u542B\u6E90\u7801\u548C\u6587\u6863","description":"\u4F7F\u7528\u4F18\u79C0\u7684\u5F00\u6E90\u5E93\u7684\u65F6\u5019\uFF0C\u6211\u4EEC\u5728 IDE \u4E2D\u5F80\u5F80\u80FD\u591F\u770B\u5230\u6CE8\u91CA\u826F\u597D\u7684\u6E90\u7801\uFF0C\u5E76\u4E14\u80FD\u591F\u65AD\u70B9\u8C03\u8BD5\uFF0C\u5341\u5206\u65B9\u4FBF\u3002\u8FD9\u662F\u5982\u4F55\u505A\u5230\u7684\u5462\uFF1F\u5176\u5B9E\u5F88\u7B80\u5355\uFF0C\u6253\u5F00\u4E0B\u8F7D\u5230\u7684\u5E93\uFF0C\u6211\u4EEC\u5C31\u53EF\u4EE5\u770B\u5230\u9700\u8981\u4E0A\u4F20\u7684\u6587\u4EF6\u3002","source":"@site/docs/notes/develop/java/java-publish-library-with-source-and-doc.mdx","sourceDirName":"notes/develop/java","slug":"/notes/develop/java/java-publish-library-with-source-and-doc","permalink":"/docs/notes/develop/java/java-publish-library-with-source-and-doc","draft":false,"unlisted":false,"tags":[{"inline":false,"label":"Java","permalink":"/docs/tags/java"},{"inline":false,"label":"Android","permalink":"/docs/tags/android"}],"version":"current","lastUpdatedAt":1579046400000,"frontMatter":{"tags":["java","android"],"last_update":{"date":"2020-01-15T00:00:00.000Z"}},"sidebar":"docsSidebar","previous":{"title":"Indie Game Tools","permalink":"/docs/notes/develop/game/indie-game-tools"},"next":{"title":"String \u7684 hashCode \u4E2D\u7684 31","permalink":"/docs/notes/develop/java/java-string-hashcode-31"}}'),s=r(74848),i=r(28453);let d={tags:["java","android"],last_update:{date:new Date("2020-01-15T00:00:00.000Z")}},o="Java/Android \u53D1\u5E03 library \u5305\u542B\u6E90\u7801\u548C\u6587\u6863",t={},l=[{value:"\u5FC5\u9700\u6587\u4EF6",id:"\u5FC5\u9700\u6587\u4EF6",level:2},{value:"\u53EF\u9009\u6587\u4EF6",id:"\u53EF\u9009\u6587\u4EF6",level:2},{value:"\u5982\u4F55\u914D\u7F6E\u6253\u5305\u8FD9\u4E24\u4E2A\u6587\u4EF6",id:"\u5982\u4F55\u914D\u7F6E\u6253\u5305\u8FD9\u4E24\u4E2A\u6587\u4EF6",level:2},{value:"\u521B\u5EFA tasks",id:"\u521B\u5EFA-tasks",level:3},{value:"\u5728\u9700\u8981\u53D1\u5E03\u7684 artifacts \u4E2D\u6DFB\u52A0\u4E4B\u524D\u521B\u5EFA\u7684 tasks",id:"\u5728\u9700\u8981\u53D1\u5E03\u7684-artifacts-\u4E2D\u6DFB\u52A0\u4E4B\u524D\u521B\u5EFA\u7684-tasks",level:3}];function c(e){let a={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.header,{children:(0,s.jsx)(a.h1,{id:"javaandroid-\u53D1\u5E03-library-\u5305\u542B\u6E90\u7801\u548C\u6587\u6863",children:"Java/Android \u53D1\u5E03 library \u5305\u542B\u6E90\u7801\u548C\u6587\u6863"})}),"\n",(0,s.jsx)(a.p,{children:"\u4F7F\u7528\u4F18\u79C0\u7684\u5F00\u6E90\u5E93\u7684\u65F6\u5019\uFF0C\u6211\u4EEC\u5728 IDE \u4E2D\u5F80\u5F80\u80FD\u591F\u770B\u5230\u6CE8\u91CA\u826F\u597D\u7684\u6E90\u7801\uFF0C\u5E76\u4E14\u80FD\u591F\u65AD\u70B9\u8C03\u8BD5\uFF0C\u5341\u5206\u65B9\u4FBF\u3002\u8FD9\u662F\u5982\u4F55\u505A\u5230\u7684\u5462\uFF1F\u5176\u5B9E\u5F88\u7B80\u5355\uFF0C\u6253\u5F00\u4E0B\u8F7D\u5230\u7684\u5E93\uFF0C\u6211\u4EEC\u5C31\u53EF\u4EE5\u770B\u5230\u9700\u8981\u4E0A\u4F20\u7684\u6587\u4EF6\u3002"}),"\n",(0,s.jsx)(a.h2,{id:"\u5FC5\u9700\u6587\u4EF6",children:"\u5FC5\u9700\u6587\u4EF6"}),"\n",(0,s.jsx)(a.p,{children:"\u5728\u53D1\u5E03 library \u5230 Maven \u4ED3\u5E93\u65F6\uFF0C\u901A\u5E38\u60C5\u51B5\u4E0B\u6211\u4EEC\u4E0A\u4F20\u7684\u6587\u4EF6\u5305\u542B\uFF1A"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsxs)(a.li,{children:["\u63CF\u8FF0\u6587\u4EF6 POM: ",(0,s.jsx)(a.code,{children:"artifactId-version.pom"})]}),"\n",(0,s.jsxs)(a.li,{children:["aar/jar: ",(0,s.jsx)(a.code,{children:"artifactId-version.aar/jar"})]}),"\n"]}),"\n",(0,s.jsx)(a.p,{children:"\u793A\u4F8B\u5982\u4E0B\uFF1A"}),"\n",(0,s.jsx)(a.pre,{children:(0,s.jsx)(a.code,{children:"perfmonitor-0.1.1-20200114.075334-4.aar 14-Jan-2020 15:53 48.27 KB\nperfmonitor-0.1.1-20200114.075334-4.pom 14-Jan-2020 15:53 463 bytes\n"})}),"\n",(0,s.jsx)(a.p,{children:"\u6709\u4E86\u8FD9\u4E24\u8005\uFF0C\u5176\u4ED6\u4EBA\u5C31\u53EF\u4EE5\u901A\u8FC7 GAV(Group, Artifact, Version) \u6765\u5B9A\u4F4D\u5E76\u4E0B\u8F7D\u5230\u6211\u4EEC\u53D1\u5E03\u7684 library\u3002"}),"\n",(0,s.jsx)(a.h2,{id:"\u53EF\u9009\u6587\u4EF6",children:"\u53EF\u9009\u6587\u4EF6"}),"\n",(0,s.jsx)(a.p,{children:"\u9664\u4E86\u4E0A\u8FF0\u7684\u5FC5\u9700\u6587\u4EF6\uFF0C\u6211\u4EEC\u8FD8\u53EF\u4EE5\u4E0A\u4F20\u4E24\u4E2A\u53EF\u9009\u6587\u4EF6\uFF1A"}),"\n",(0,s.jsxs)(a.ul,{children:["\n",(0,s.jsxs)(a.li,{children:["\n",(0,s.jsxs)(a.p,{children:["javadoc jar \u5305: ",(0,s.jsx)(a.code,{children:"artifactId-version-javadoc.jar"}),"\uFF0C"]}),"\n",(0,s.jsxs)(a.p,{children:["\u6253\u5305\u4E86 library\u7684 Javadoc\u3002\n\u53EA\u8981\u6309\u7167\u89C4\u8303\u547D\u540D\uFF0C\u4F60\u53D1\u5E03\u5230 ",(0,s.jsx)(a.a,{href:"https://search.maven.org/",children:"Maven Central"})," \u6216 ",(0,s.jsx)(a.a,{href:"https://bintray.com/",children:"Bintray (JCenter)"})," \u7684 library \u7684 Javadoc \u5C31\u53EF\u4EE5\u81EA\u52A8\u90E8\u7F72\u5230\u6BD4\u5982",(0,s.jsx)(a.a,{href:"https://www.javadoc.io/",children:"javadoc.io"}),"\u8FD9\u6837\u7684\u670D\u52A1\u4E0A\u3002"]}),"\n"]}),"\n",(0,s.jsxs)(a.li,{children:["\n",(0,s.jsxs)(a.p,{children:["sources jar \u5305: ",(0,s.jsx)(a.code,{children:"artifactId-version-sources.jar"})]}),"\n",(0,s.jsxs)(a.p,{children:["\u6253\u5305\u4E86 library \u7684\u6E90\u7801\u3002\n\u53EA\u8981\u6309\u7167\u89C4\u8303\u547D\u540D\uFF0C\u667A\u80FD\u7684 IDE\uFF08\u6BD4\u5982 IDEA/Android Studio\uFF09\u4F1A\u81EA\u52A8\u5E2E\u6211\u4EEC\u4E0B\u8F7D\u5E76\u5C06",(0,s.jsx)(a.code,{children:".java"}),"\u6587\u4EF6\u4E0E\u76F8\u5E94\u7684",(0,s.jsx)(a.code,{children:".class"}),"\u6587\u4EF6\u5173\u8054\u3002\n\u6B64\u65F6\u5F53\u6211\u4EEC\u5728\u8FD9\u4E9B IDE \u4E2D\u67E5\u770B\u67
1D0\u4E2A\u6211\u4EEC\u53D1\u5E03\u7684 library \u7684\u7C7B\u4EE3\u7801\u65F6\uFF0C\u770B\u5230\u7684\u5C31\u662F",(0,s.jsx)(a.code,{children:".java"}),"\u6587\u4EF6\u800C\u4E0D\u518D\u662F",(0,s.jsx)(a.code,{children:".class"}),"\u6587\u4EF6\uFF0C\u8FD9\u6837\u4E0D\u4EC5\u65B9\u4FBF\u9605\u8BFB\u7406\u89E3\u4EE3\u7801\u903B\u8F91\uFF0C\u800C\u4E14\u53EF\u4EE5\u76F4\u63A5\u8FDB\u884C\u65AD\u70B9\u8C03\u8BD5\u3002\n\u51E0\u4E4E\u6240\u6709\u5F00\u6E90\u9879\u76EE\u7684\u53D1\u5E03\u90FD\u4F1A\u5305\u542B sources\uFF0C\u6BD4\u5982 Android \u672C\u8EAB\u3002"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(a.p,{children:"\u793A\u4F8B\u5982\u4E0B\uFF1A"}),"\n",(0,s.jsx)(a.pre,{children:(0,s.jsx)(a.code,{children:"perfmonitor-0.1.1-20200114.075334-4-javadoc.jar 14-Jan-2020 15:53 94.29 KB\nperfmonitor-0.1.1-20200114.075334-4-sources.jar 14-Jan-2020 15:53 23.93 KB\n"})}),"\n",(0,s.jsx)(a.admonition,{type:"info",children:(0,s.jsxs)(a.p,{children:["\u5982\u679C\u4F60\u7684 library \u8981\u53D1\u5E03\u5230 ",(0,s.jsx)(a.a,{href:"https://search.maven.org/",children:"Maven Central"}),"\uFF0C\u90A3\u4E48\u8FD9\u4E24\u4E2A\u6587\u4EF6\u5C31\u662F",(0,s.jsx)(a.a,{href:"https://maven.apache.org/repository/guide-central-repository-upload.html",children:"\u5FC5\u9700"}),"\u7684\u3002"]})}),"\n",(0,s.jsx)(a.h2,{id:"\u5982\u4F55\u914D\u7F6E\u6253\u5305\u8FD9\u4E24\u4E2A\u6587\u4EF6",children:"\u5982\u4F55\u914D\u7F6E\u6253\u5305\u8FD9\u4E24\u4E2A\u6587\u4EF6"}),"\n",(0,s.jsxs)(a.p,{children:[(0,s.jsx)(a.code,{children:"Android Gradle plugin"}),"\u4E0E",(0,s.jsx)(a.code,{children:"Java plugin"}),"\u6709\u4E0D\u540C\uFF0C\u4F7F\u7528\u4E86 Kotlin \u540E\u4E5F\u4F1A\u4E0D\u540C\uFF0C\u8FD9\u91CC\u53EA\u5217\u51FA\u4E0D\u4F7F\u7528 Kotlin \u7684 Android \u7684\u6838\u5FC3\u914D\u7F6E\u65B9\u6CD5\u3002"]}),"\n",(0,s.jsx)(a.h3,{id:"\u521B\u5EFA-tasks",children:"\u521B\u5EFA tasks"}),"\n",(0,s.jsx)(a.pre,{children:(0,s.jsx)(a.code,{className:"language-groovy",children:"// sources\ntasks.register('sourcesJar', Jar) {\n archiveClassifier.set('sources')\n from android.sourceSets.main.java.sourceFiles\n}\n\n// javadoc\ntasks.register('androidJavadoc', Javadoc) {\n source = android.sourceSets.main.java.srcDirs\n classpath += project.files(android.getBootClasspath().join(File.pathSeparator))\n}\ntasks.register('javadocJar', Jar) {\n dependsOn androidJavadoc\n archiveClassifier.set('javadoc')\n from androidJavadoc.destinationDir\n}\n"})}),"\n",(0,s.jsx)(a.h3,{id:"\u5728\u9700\u8981\u53D1\u5E03\u7684-artifacts-\u4E2D\u6DFB\u52A0\u4E4B\u524D\u521B\u5EFA\u7684-tasks",children:"\u5728\u9700\u8981\u53D1\u5E03\u7684 artifacts \u4E2D\u6DFB\u52A0\u4E4B\u524D\u521B\u5EFA\u7684 tasks"}),"\n",(0,s.jsx)(a.pre,{children:(0,s.jsx)(a.code,{className:"language-groovy",children:"publishing {\n publications {\n releaseAar(MavenPublication) {\n // ... \u539F\u6709artifact\n artifact sourcesJar\n artifact javadocJar\n }\n }\n}\n"})}),"\n",(0,s.jsx)(a.admonition,{type:"tip",children:(0,s.jsxs)(a.p,{children:["\u517C\u5BB9 Java/Android \u5404\u79CD\u60C5\u51B5\u7684\u914D\u7F6E\u8BF7\u79FB\u6B65",(0,s.jsx)(a.a,{href:"https://github.com/CrazyOrr/gradle-mvn-artifacts",children:"\u8FD9\u91CC"})]})})]})}function h(e={}){let{wrapper:a}={...(0,i.R)(),...e.components};return a?(0,s.jsx)(a,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453(e,a,r){r.d(a,{R:()=>d,x:()=>o});var n=r(96540);let s={},i=n.createContext(s);function d(e){let a=n.useContext(i);return n.useMemo(function(){return"function"==typeof e?e(a):{...a,...e}},[a,e])}function o(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),n.createElement(i.Provider,{value:a},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.