序:
相信很多做java很多年的同学都会一个思维惯性或者说是一种学习模式,即将新学习的语言与之前的语言进行比较然后再进行惯性的套用。本文以项目打包作为切入点,以java的文件打包模式来尝试打包Go项目。使用 Makefile 构建工具,构建时将静态文件复制到目标目录,随后一起打包。这种方式不将文件嵌入到二进制中,但仍能在同一分发中包含静态文件的打包方式深得我心。
目录
3.1使用powershell 并通过超管打开输入一下指令:
一、创建Makefile
创建一个简单的 Makefile 来管理构建过程。下面是一个示例 Makefile:
# 设置变量
BINARY_NAME=myapp
SOURCE_FILES=main.go
STATIC_FILES=static/*
# 默认目标
all: build
# 构建目标
build: $(SOURCE_FILES) $(STATIC_FILES)
mkdir -p bin
go build -o bin/$(BINARY_NAME) $(SOURCE_FILES)
# 清理目标
clean:
rm -rf bin/$(BINARY_NAME)
# 运行目标
run: build
./bin/$(BINARY_NAME)
.PHONY: all build clean run
介绍一下文件中的命名:
- BINARY_NAME: 定义生成的二进制文件名。
- SOURCE_FILES: 包含你的 Go 源代码文件。
- STATIC_FILES: 包含你需要打包的静态文件路径。
- all: 默认目标,执行
make
时会调用这个目标。 - build: 该目标会构建 Go 应用,并将二进制文件输出到
bin
目录。 - clean: 清理生成的二进制文件。
- run: 编译并运行你的应用。
二、如何使用
本人用的是goland编译工具,里面自带了powershell
make # 构建应用
make run # 构建并运行应用
make clean # 清理生成的二进制文件
如何输出一个文件夹:
build: $(SOURCE_FILES)
mkdir -p bin
go build -o bin/$(BINARY_NAME) $(SOURCE_FILES)
cp -r static bin/static
三、window 环境使用
在 Windows 系统上,make
命令通常不默认可用,因为它是 Unix/Linux 系统中的构建工具。
3.1使用powershell 并通过超管打开输入一下指令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
3.2 检查是否安装成功:
choco --version
3.3可能存在问题:
choco --version
choco : 无法将“choco”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正
确,然后再试一次。
所在位置 行:1 字符: 1
+ choco --version
+ ~~~~~
+ CategoryInfo : ObjectNotFound: (choco:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
如果遇到上述的问题,应该是没有安装成功,
如果 Chocolatey 不能正常工作,可能需要手动删除它。按照以下步骤操作:
1. 检查环境变量
确认 C:\ProgramData\chocolatey\bin
是否在你的系统环境变量 PATH
中:
- 在 Windows 搜索栏中,输入“环境变量”,然后选择“编辑系统环境变量”。
- 在系统属性窗口中,点击“环境变量”按钮。
- 在“系统变量”部分,找到
Path
变量并点击“编辑”。 - 确认
C:\ProgramData\chocolatey\bin
是否在列表中。如果没有,添加它。
2. 手动检查 Chocolatey 文件夹
确保 C:\ProgramData\chocolatey
文件夹存在。如果存在,里面应该有一些子文件夹,如 bin
、lib
等。
3. 重新安装 Chocolatey
如果上述步骤都无法解决问题,你可以手动删除 Chocolatey,然后重新安装。按照以下步骤操作:
-
备份和删除:备份
C:\ProgramData\chocolatey
文件夹,然后删除它。 -
重新安装:使用以下命令重新安装 Chocolatey:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
一旦 Chocolatey 正常工作,你可以通过以下命令安装 make
:
choco install make
四、修改Makefile
将 mkdir -p bin
修改为适合 Windows 的版本。可以使用以下代码:
# 设置变量
BINARY_NAME=myapp
SOURCE_FILES=cmd/main.go
STATIC_FILES=resource/*
# 默认目标
all: build
# 构建目标
build: $(SOURCE_FILES) $(STATIC_FILES)
if not exist bin ( mkdir bin )
go build -o bin/$(BINARY_NAME).exe $(SOURCE_FILES)
if not exist bin\resource ( mkdir bin\resource )
xcopy resource\* bin\resource /E /I /Y || echo "没有找到要复制的文件"
# 清理目标
clean:
if exist bin\$(BINARY_NAME).exe ( del bin\$(BINARY_NAME).exe )
if exist bin ( rmdir bin /s /q )
# 运行目标
run: build
./bin/$(BINARY_NAME).exe
.PHONY: all build clean run
注意上述代码是本人环境的代码,各位同学需将对于的路径进行调整。
五、执行
make build
确保你的根目录存在:
六、总结
上述就是本次如何使用Makefile打包一下Go项目全部内容,如果遇到问题可在评论区留言。