电商网站开发技术难点/市场调研
将项目代码导入Github
1.将本地项目目录初始化为 Git 仓库。 默认情况下,初始分支称为 main;
如果使用 Git 2.28.0 或更高版本,则可以使用 -b 设置默认分支的名称。
git init -b main
如果使用 Git 2.27.1 或更低版本,则可以使用 git symbolic-ref 设置默认分支的名称。
git init && git symbolic-ref HEAD refs/heads/main
2.在新的本地仓库中添加文件。 这会暂存它们用于第一次提交。
$ git add .
# Adds the files in the local repository and stages them for commit. 若要取消暂存文件,请使用“git reset HEAD YOUR-FILE”。
3.提交暂存在本地仓库中的文件。
$ git commit -m "First commit"
# Commits the tracked changes and prepares them to be pushed to a remote repository. 要删除此提交并修改文件,请使用 'git reset --soft HEAD~1' 并再次提交和添加文件。
4.在 GitHub.com 上创建一个新存储库。 为避免错误,请勿使用 README、许可或 gitignore 文件初始化新存储库。 您可以在项目推送到 GitHub 之后添加这些文件。
5.在存储库主页,单击Code 复制远程存储库URL,这里我们使用SSH URL。
使用SSH进行连接,需要新增 SSH 密钥到 GitHub 帐户,如果已存在可跳过。
添加方法参考下面这个连接
https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases
6.本地仓库中添加远程存储库的 URL(将在其中推送本地存储库),请运行以下命令。 将 REMOTE-URL 替换为 前面复制的完整URL。
git remote add origin REMOTE-URL
要验证远程 URL 设置是否正确,请运行以下命令。
git remote -v
origin git@github.com:cncomer/okpermission.git (fetch)
origin git@github.com:cncomer/okpermission.git (push)
7.添加maven-publish插件
要在JitPack.io上构建Android库,我们还需要在build.gradle文件中添加maven-publish插件,下面是可供参考的相关配置和说明。
plugins {id 'com.android.library'//添加maven-publish插件id 'maven-publish'
}// 在maven-publish插件的基础使用中是不包含上传aar包的源码。
// 增加上传源码的task,如:
tasks.register("sourceJar", Jar) {// 通过 android.sourceSets.main.java.srcDirs 指定的源码,只能识别到 Java 文件,而 kt 文件被忽略了,但 通过查看官方文档可以知道,from 函数是可以指定源码路径的,// 所以这里直接把 from 函数的参数替换为 源码路径,如以下代码from android.sourceSets.main.java.getSrcDirs() // 源码路径archiveClassifier = "sources"
}//publishing用于配置项目发布相关信息,可以配置的信息有两个:repositories 和 publications
publishing {// 配置maven 仓库repositories {// 本地仓库位于USER_HOME/.m2/repositorymavenLocal()
// // 其他maven仓库
// maven { url uri('/Users/h__d/Desktop/1') }
// // aliyun镜像仓库
// maven {
// // 凭证 访问仓库的 账号和密码
// credentials {
// username 'username' // 仓库发布用户名
// password 'password' // 仓库发布用户密码
// }
// // 仓库地址
// url 'https://maven.aliyun.com/nexus/content/groups/public/'
// }}// 配置需要发布的jar的信息,即aar包的信息。publications是一个容器,类型是 PublicationContainer,其可以配置的信息类型是MavenPublication,可以理解成是一个列表集合,// 而集合中存储的对象是 MavenPublication,而对象的名称可以由自己随便定义。 所以 publications 也是可以配置多个的,如:releasepublications {// 任务名称:release (名称可以随便定义)比如release表示发布正式包,debug表示snapshot包release(MavenPublication) {// 上传指定aar包的方式有两种// 依赖 bundleReleaseAar 任务,并上传其产出的aarafterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) } // 方式一:生成aar包// artifact "$buildDir/outputs/aar/${project.name}-release.aar" // 方式二:指定生成的aar路径groupId = "com.github.cncomer"artifactId = "okpermission"version = "1.0.0"artifact sourceJar// 依赖传递// 经过基础与上传源码后,是能正常依赖与使用的,但是aar包原本依赖的一下第三方包是不会自动依赖,需要手动添加依赖。// 把library中的依赖信息,手动添加到 pom 文件中,就可以完成依赖传递,如下:// pom文件中声明依赖,从而传递到使用方,注意需要--no-configuration-cache选项pom.withXml {def dependenciesNode = asNode().appendNode('dependencies')configurations.implementation.allDependencies.each {// 避免出现空节点或 artifactId=unspecified 的节点if (it.group != null && (it.name != null && "unspecified" != it.name) && it.version != null) {println "dependency=${it.toString()}"def dependencyNode = dependenciesNode.appendNode('dependency')dependencyNode.appendNode('groupId', it.group)dependencyNode.appendNode('artifactId', it.name)dependencyNode.appendNode('version', it.version)dependencyNode.appendNode('scope', 'implementation')}}}}}
}
执行下面的任务检查库是否能安装到mavenLocal($HOME/.m2/repository)
./gradlew publishToMavenLocal
// or if you named your publication "release"
./gradlew publishReleasePublicationToMavenLocal
执行成功后会输出BUILD SUCCESSFUL。
在USER_HOME.m2/repository下生成了软件包文件。
8.添加jitpack.yml配置文件
JitPack.io默认的构建环境是java8,如果我们的项目使用的gradle插件版本8.5.0,需要Java17,就需要在根项目创建jitpack.yml文件,指定Java版本。
参考Building :: Documentation for JitPack.io
//jitpack.yml
jdk:
- openjdk17
如果需要一个指定的版本,可以输入以下内容:
//jitpack.yml
before_install:
- sdk install java 11.0.10-open
- sdk use java 11.0.10-open
否则可能在JitPack上看到编译错误
或者
这些编译错误都是Gradle插件所需的java版本高于编译环境的java版本导致的。我们可以从Android Studio设置里查看gradle使用的java版本。
9.将本地存储库推送到 GitHub.com,请运行以下命令。
git push -u origin main
如果默认分支并非名为“main”,请将“main”替换为默认分支的名称。
-u 的作用是将本地的分支与远程的对应分支关联起来,这样在后续的操作中,可以直接使用 git push 或 git pull 命令来同步这两个分支,而无需每次都指定远程仓库名和分支名。
此时可能会报错,比如
如果前面在Github上创建存储库的时候选择了创建README、.gitignore,就会碰到这个问题。
大概意思就是需要先pull更新一下,然而git pull origin main的时候又提示
git pull fatal: refusing to merge unrelated histories
这个错误发生在尝试使用git pull命令合并两个独立的git仓库时。Git拒绝合并没有共同祖先的两个分支的历史记录,因为这样的合并可能会导致数据丢失。自Git 2.9版本以后,默认情况下,如果尝试合并两个没有共同历史的分支,Git会拒绝进行合并,并提示这是一个“unrelated histories”错误。
解决方法:
你可以使用--allow-unrelated-histories选项来允许这样的合并操作。执行以下命令:
git pull --allow-unrelated-histories
这将允许Git合并两个独立的历史,进行不带控制的合并。如果你确信这两个仓库之间的合并是有意为之,这样做是安全的。如果不确定,你可能需要仔细检查合并的结果,确保没有丢失重要的更改。
$ git pull --allow-unrelated-histories origin main
From github.com:cncomer/okpermission
* branch main -> FETCH_HEAD
CONFLICT (add/add): Merge conflict in .gitignore
Auto-merging .gitignore
Automatic merge failed; fix conflicts and then commit the result.
提示有冲突,解决后commit,然后再git push -u origin main,正常提交到了Github。
在Github上创建存储库的发行版
在存储库主页右边的Release处会显示当前项目的最新发行版信息,我们现在还没有,所以点击Create a new release来创建一个。
这里要注意下,发行版需要基于某个tag, 如果没有必须先创建一个,否则没法下一步。
本地仓库中添加一个名为1.0.0的tag
git tag 1.0.0
接着将tag推送到Github
git push origin 1.0.0
我们回到创建发行版编辑界面,可以选择我们刚才创建的tag,来创建对应的发行版,创建完成后该发行版会自动在JitPack执行构建,并发布到JitPack仓库。
添加JitPack仓库依赖
在JitPack.io输入Git repo url,点击Look up检索。
如果Log下面对应的图标是绿色的,就代表库项目构建成功了,可以作为依赖项使用了。
点击Get it, 就会看到添加依赖的方法。
Step 1. 在根项目settings.gradle文件中添加JitPack仓库,一般添加在repositories末尾。
dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {//其他仓库//JitPack仓库maven { url 'https://jitpack.io' }}
}
Step 2. 在项目build.gradle中添加依赖。
dependencies {implementation 'com.github.cncomer:okpermission:1.0.0'
}
点击Log查看构建状态:
相关文章:

将Android Library项目发布到JitPack仓库
将项目代码导入Github 1.将本地项目目录初始化为 Git 仓库。 默认情况下,初始分支称为 main; 如果使用 Git 2.28.0 或更高版本,则可以使用 -b 设置默认分支的名称。 git init -b main 如果使用 Git 2.27.1 或更低版本,则可以使用 git symbo…...

JAVAWeb实战(后端篇)
因为前后端代码内容过多,这篇只写后端的代码,前端的在另一篇写 项目实战一: 1.创建数据库,表等数据 创建数据库 create database schedule_system 创建表,并添加内容 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------…...

【vs】实用调试技巧——学会写优秀的代码!
🦄个人主页:小米里的大麦-CSDN博客 🎏所属专栏:https://blog.csdn.net/huangcancan666/category_12718530.html ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、什么是BUG? 三、调试是什么?有多重要? 一名优秀…...

数组声明方式
数组声明方式 一、 一维数组 元素数据类型[] 数组名; // 推荐元素数据类型 数组名[]; 二、 二维数组 元素数据类型[][] 数组名称; // 推荐元素数据类型 数组名称[][];元素数据类型[] 数组名称[]; 注: 对于第三种方式元素数据类型[] 数组名称[];,可…...

Docker中Docker网络-理解Docker0与自定义网络的使用示例
场景 CentOS7中Docker的安装与配置: CentOS7中Docker的安装与配置_centos docker sock-CSDN博客 在上面安装好Docker之后。 关于对Docker中默认docker0以及自定义网络的使用进行学习。 注: 博客:霸道流氓气质-CSDN博客 实现 理解dock…...

领域驱动大型结构之SYSTEM METAPHOR(系统隐喻)
在领域驱动设计(Domain-Driven Design, DDD)中,"System Metaphor" 是一种用于帮助开发团队和业务人员在理解和沟通系统时使用的概念模型。虽然 "System Metaphor" 并不是 DDD 的核心概念,但它在敏捷开发方法&…...

web前端开发一、VScode环境搭建
1、VScode安装live server插件,写完代码后,保存就会在浏览器自动更新,不需要再去浏览器点击刷新了 2、创建html文件 3、在文件中输入感叹号 ! 4、选择第一个,然后回车,就会自动输入html的标准程序 5、…...

DiAD代码use_checkpoint
目录 1、梯度检查点理解2、 torch.utils.checkpoint.checkpoint函数 1、梯度检查点理解 梯度检查点(Gradient Checkpointing)是一种深度学习优化技术,它的目的是减少在神经网络训练过程中的内存占用。在训练深度学习模型时,我们需…...

nginx出现Refused to apply inline style because it violates
Content Security Policy的错误。根据错误提示,nginx拒绝应用内联样式,因为它违反了内容安全策略(Content Security Policy)。内容安全策略是一种浏览器机制,用于防止潜在的安全漏洞,通过限制从外部来源加载…...

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组⑥ | 11.15 - 11.17
前言 第11章对应的内容选择题和案例分析都会进行考查,这一章节属于10大管理的内容,学习要以教材为准。本章上午题分值预计在15分。 目录 11.15 规划资源管理 11.15.1 主要输入 11.15.2 主要工具与技术 11.15.3 主要输出 11.16 估算活动资源 11.1…...

基础警务互联网app
智慧公安以大数据、云计算、人工智能、物联网和移动互联网技术为支撑,以“打、防、管、控”为目的,综合研判为核心,共享信息数据资源,融合业务功能,构建公安智慧大数据平台,实现公安信息数字化、网络化和智…...

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!
-1. 前言 为了方便摸鱼,我之前写过一个通过sql生成代码的工具,但是服务器到期了,也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…...

在国产芯片上实现YOLOv5/v8图像AI识别-【2.2】RK3588上C++开发环境准备及测试更多内容见视频
本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 B站配套视频:https://www.bilibili.com/video/BV1or421T74f 板子…...

2024数据资产入表财务实操手册
关注公众号《方案驿站》,并私信:2024数据资产入表财务实操手册,可获取本文pdf文件。...

react.16+
1、函数式组件 在vite脚手架中执行: app.jsx: import { useState } from react import reactLogo from ./assets/react.svg import viteLogo from /vite.svg import ./App.cssfunction App() {console.log(this)return <h2>我是函数式组件</h2> }exp…...

如何实现MySQL对某一张表的binlog日志进行记录
在 MySQL 中,使用触发器(Triggers)来记录表的变更是一种常见的方法。下面是具体的配置和步骤: 1. 创建日志表 首先,需要创建一个日志表,用于存储变更记录。 CREATE TABLE my_table_log (id INT AUTO_INC…...

使用requests库进行网络爬虫:入门指南
在数据收集与分析的广阔领域中,网络爬虫是一项基础而强大的技能。requests库是Python中用于发送HTTP请求的第三方库,它简洁易用,非常适合初学者学习网络爬虫。本文将带你一步步了解如何使用requests库进行基本的网络爬虫操作。 一、安装requ…...

实验5-1 使用函数计算两点间的距离
本题要求实现一个函数,对给定平面任意两点坐标(x1,y1)和(x2,y2),求这两点之间的距离。 函数接口定义: double dist( double x1, double y1, double x2, double y2 );其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函…...

免费!OpenAI发布最新模型GPT-4o mini,取代GPT-3.5,GPT-3.5退出历史舞台?
有个小伙伴问我,GPT-4O mini是什么,当时我还一脸懵逼,便做了一波猜测: 我猜测哈,这个可能是ChatGPT4o的前提下,只支持文本功能的版本,速度更快 结果,大错特错。 让我们一起看看Open…...

目标检测损失计算部分(YOLO)
ComputeLoss 标准化坐标的增益张量 标准化坐标的增益张量(gain tensor)用于将归一化的目标转换为特定特征层的网格尺度,以便进行匹配和计算。 在目标检测模型中,输入图像被划分为多个网格,每个网格负责预测多个锚框…...

Swift 方法
Swift 方法 Swift 是一种强大的编程语言,用于开发 iOS 和 macOS 应用程序。在 Swift 中,方法是一段代码,它定义了执行特定任务的步骤。方法可以提高代码的可重用性和可维护性。本文将介绍 Swift 方法的基本概念、语法和用法。 1. 基本概念 1.1 方法定义 方法是一段代码,…...

哪些牌子充电宝性价比比较高?目前公认比较好用充电宝都在这儿!
在这个科技飞速发展的时代,充电宝已经成为我们生活中不可或缺的一部分。然而,在享受充电宝带来的便利时,我们不能忽视一个至关重要的问题——安全性。随着无线充电宝的普及,大家对于“无线充电宝哪个牌子更好?”的疑问…...

计算机网络必会面经
1.键入网址到网页显示,期间发生了什么 2.在TCP/IP网络模型中。TCP将数据进行分段后,为什么还需要IP层继续分片 3.详细说明tcp三次握手,为什么是三次,若每次握手丢了,解决办法是什么 4.详细说明tcp四次挥手ÿ…...

深入理解 Go 数组、切片、字符串
打个广告:欢迎关注我的微信公众号,在这里您将获取更全面、更新颖的文章! 原文链接:深入理解 Go 数组、切片、字符串 欢迎点赞关注 前言 为什么在一篇文章里同时介绍数组、切片、字符串,了解这三个数据类型底层数据结构…...

STM32下的HAL库U盘数据读写
最近在使用FreeRTOS操作U盘数据读取,与裸机开发区别不大,只要注意默认分配的栈大小就行 FATFS简介 FATFS 是一个完全免费开源的 FAT 文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准 C 语言编写,所以具有良好的硬件平…...

JavaScript(20)——事件委托
事件委托是利用事件流的特征解决一些开发需求的知识技巧 优点:减少注册次数,提高程序性能 原理:利用事件冒泡的特点。 给父元素注册事件,当我们触发子元素的时候,会冒泡到父元素上,从而触发父元素事件。…...

Linux系统安装opencv
在Linux系统上安装OpenCV时,使用pip install opencv-python-headless是一个常见的选择。以下是安装OpenCV的步骤总结: 安装步骤: 更新系统软件包(可选): sudo apt update sudo apt upgrade安装pip…...

nginx反向代理+nginx黑白名单+nginx负载均衡+平滑升级+配置jdk环境-7.30
一、反向代理 1.前端服务器配置 前端服务器:用于接收和响应客户端,代理另一台主机 Nginx 安装 (1).下载安装nginx [rootweb ~]# wget https://nginx.org/download/nginx-1.26.1.tar.gz (2).解压 [rootweb ~ ]# tar -zxvf nginx-1.26.1.tar.gz (3…...

C# Unity 面向对象补全计划 之 访问修饰符
本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝...

JAVA多线程设计模式 (多线程程序的衡量标准)
前言 如果你对一个程序的评价方式还停留在“这个程序写得不错”、“这个程序写得太差”的程度,这样很难看出你是否确实分析了程序的构造。不要只是“好不好”应该要有一个“好在哪里,不好在哪里”的评量标准。 一、下载地址 下载地址:JAVA…...