网站开发大赛,外面网站怎么做的,简单的响应式网页,宿州移动网站建设1.背景
当你写了一个自我感觉良好的开源工具希望给他人分享#xff0c;如果只是在github等网站进行公布之外#xff0c;用户使用起来还不是很方便#xff0c;特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库#xff0c;这样别人使用就会方便很多。接下来…1.背景
当你写了一个自我感觉良好的开源工具希望给他人分享如果只是在github等网站进行公布之外用户使用起来还不是很方便特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库这样别人使用就会方便很多。接下来我们就来看看如何使用maven发布自己依赖到中央仓库吧。
由于原先的sonatype网站已经退役发布流程已经很大不一样。笔者只能根据官网摸着石头过河一路踩坑才完成大业。
2.版本控制规则
先说下对于发布的工具我们还是要遵循基本的版本规则采用常用的三段式。即
主版本号(Major version).次版本号(Minor version).修订号(Revision number)
如:1.2.3
主版本号:版本的主要变更,通常添加新特性会增加主版本号,如从1升级到2.次版本号:版本的次要变更,修复bug或增加小特性会增加次版本号,如从2.1升级到2.2.修订号:版本的微小变更,通常修复bug或优化功能会增加修订号,如从2.2.1升级到2.2.2.
3.注册Sonatype账户
3.1Sonatype介绍
Sonatype是一家软件公司专注于提供Maven和Nexus仓库管理工具。Sonatype负责管理和维护Maven中央仓库。该仓库是Maven生态系统中最重要的公共仓库之一包含了大量的开源Java项目和库。
原先的网站https://issues.sonatype.org/secure/Signup!default.jspa
官方已宣布退役原文 3.2新注册网站
前往Maven Central: Search 注册点击右上方的注册按钮。注册过程很简单不详述。 3.3新建命名空间
注册成功系统会弹出一个添加命名空间的界面。如果使用github账户登录有可能不会弹出这个界面。因为系统自动会你创建一个 io.github.your GitHub username的命名空间。 发布依赖需要一个命名空间也就是maven系统的groupId。如果自己没有申请公网域名的话可以使用github这个免费域名。 3.4验证命名空间
在自己的github上创建一个临时项目证明域名是自己的临时仓库名字系统会提供域名验证成功后可以删除。 创建之后等待一会会可以看到命名空间的状态变为已验证 4.修改pom文件
根据sonatype的官方要求修改项目的pom文件参考下 官方对发布项目的基本要求
4.1增加标签
主要需要添加几个标签如下所示 issueManagementsystemGitHub Issues/systemurlhttps://github.com/kingston-csj/jforgame/issues/url/issueManagementscmconnectionscm:git:https://github.com/jforgame/jforgame.git/connectiondeveloperConnectionscm:git:gitgithub.com:jforgame/jforgame.git/developerConnectionurlhttps://github.com/jforgame/jforgame/url/scmlicenseslicensenameApache License, Version 2.0/nameurlhttp://www.apache.org/licenses/LICENSE-2.0.txt/urldistributionrepo/distribution/license/licensesdevelopersdeveloperidkingston-csj/idnamekingston/nameemaildefinemyself163.com/emailorganizationUrlhttps://github.com/kingston-csj/organizationUrlrolesroleowner/roleroledeveloper/role/roles/developer/developers
4.2部署包带上source文件和doc文件
sonatype要求部署的包要附带源代码及API文档即增加两个文件
example-application-1.4.7-sources.jar
example-application-1.4.7-javadoc.jar
只需在pom文件加两个插件即可
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-source-plugin/artifactIdversion2.2.1/versionexecutionsexecutionidattach-sources/idgoalsgoaljar-no-fork/goal/goals/execution/executions
/plugin
plugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-javadoc-plugin/artifactIdversion2.9.1/versionexecutionsexecutionidattach-javadocs/idgoalsgoaljar/goal/goals/execution/executions
/plugin
4.3提供文件校验码
对每个上传的文件除了asc文件需要附加校验码文件md5sha1。 后文介绍central-publishing-maven-plugin插件内嵌本功能
假设你上传的文件为
example-application-1.4.7.pom
example-application-1.4.7.jar
example-application-1.4.7-sources.jar
example-application-1.4.7-javadoc.jar
需要部署的文件为
example-application-1.4.7.pom.md5
example-application-1.4.7.pom.sha1
example-application-1.4.7.jar.md5
example-application-1.4.7.jar.sha1
example-application-1.4.7-sources.jar.md5
example-application-1.4.7-sources.jar.sha1
example-application-1.4.7-javadoc.jar.md5
example-application-1.4.7-javadoc.jar.sha1
5.GPG签名
GPGGNU Privacy Guard是一种加密和签名工具常用于软件包的签名和验证。在Maven中GPG签名用于确保发布到远程仓库的依赖是经过验证和可信的。若希望发布依赖到远程仓库需要进行GPG签名。
5.1下载GPG秘钥
前往官网下载 -- gpg下载 5.2创建密钥
使用KleopatraGPG可视化工具创建密钥
点击文件-新建OpenGPG秘钥对输入名称和邮箱勾选“使用密码句保护生成的密钥” 生成之后右键证书选择“在服务器上发布”
也可以选择使用命令行
gpg --keyserver keyserver.ubuntu.com --send-keys yourPublicKey6.使用maven部署
6.1sonatype生成用户token
在 sonatype 生成用户token 6.2setting文件添加server maven配置文件setting.xml添加生成的token
settingsserversserveridcentral/idusernametoken-username/usernamepasswordtoken-password/password/server/servers
/settings
6.3setting文件添加gpg签名
settingsprofilesprofileidossrh/idactivationactiveByDefaulttrue/activeByDefault/activationpropertiesgpg.executablegpg/gpg.executablegpg.passphrasethe_pass_phrase/gpg.passphrase/properties/profile/profiles
/settings
6.4修改pom文件的版本号
在多模块应用版本号一般下载最顶层的pom.xml里。见properties的revision标签。 groupIdio.github.jforgame/groupIdartifactIdjforgame-parent/artifactIdversion${revision}/versionpackagingpom/packagingnamejforgame-parent/nameurlhttps://github.com/jforgame/jforgame/urlpropertiesrevision1.0.0/revision/properties
在发布的时候如果手动挨个修改版本号超麻烦。可以使用maven的版本插件直接在项目根pom.xml目录下使用以下命令就能轻松设置工程等的版本。
mvn versions:set -DnewVersion1.0.06.5使用maven发布插件
使用依赖可以方便对依赖进行发布详情见官网-- sonatype依赖部署插件
父pom文件加入插件申明
buildpluginsplugingroupIdorg.sonatype.central/groupIdartifactIdcentral-publishing-maven-plugin/artifactIdversion0.4.0/versionextensionstrue/extensionsconfigurationpublishingServerIdcentral/publishingServerIdtokenAuthtrue/tokenAuth/configuration/pluginplugins
/build
其中publishingServerId 标签代表的serverId是配置在maven安装目录config下的setting.xml。
注意项目采用多模块如果不想部署全部子模块只需要在父pom文件的modules标签注释掉过滤的模块即可。
在根目录下执行
mvn deploy -DskipTests
6.6sonatype网站真正发布
执行成功之后在sonatype网站可以看到上传的bound文件。 选择“Publish”按钮就可以完成发布啦。
发布之后泡杯茶回来就可以在中央仓库找到自己的代码了。 6.7项目中使用
pom文件使用中央仓库其他仓库同步仍需时间
repositoriesrepositoryidcentral/idnamecentral/nameurlhttps://repo1.maven.org/maven2/urlreleasesenabledtrue/enabled/releases/repository
/repositories
引入依赖
dependencygroupIdio.github.jforgame/groupIdartifactIdjforgame-socket-netty/artifactIdversion1.0.0/version
/dependency
一行代码即可创建socket网络服务 TcpSocketServerBuilder.newBuilder().bindingPort(HostAndPort.valueOf(ServerConfig.getInstance().getServerPort())).setMessageFactory(GameMessageFactory.getInstance()).setMessageCodec(new StructMessageCodec()).setSocketIoDispatcher(new MessageIoDispatcher(ServerScanPaths.MESSAGE_PATH)).build().start();