标准 Windows 编译 SkyWalking version=10.4

标准 Windows 编译步骤

1. 克隆 SkyWalking

复制代码
git clone https://github.com/apache/skywalking.git
cd skywalking 
git submodule update --init --recursive

2. 编译(带 UI)

复制代码
mvn clean package -DskipTests 

然后就会在

D:\IdeaProjects\skywalking-full\dist中生成一个

apache-skywalking-apm-bin.tar.gz的文件

解压缩后目录结构如下:

├─bin

├─config

│ ├─cilium-rules

│ ├─envoy-metrics-rules

│ ├─lal

│ ├─log-mal-rules

│ ├─meter-analyzer-config

│ ├─oal

│ ├─openapi-definitions

│ │ └─serviceA

│ ├─otel-rules

│ │ ├─activemq

│ │ ├─aws-dynamodb

│ │ ├─aws-eks

│ │ ├─aws-gateway

│ │ ├─aws-s3

│ │ ├─banyandb

│ │ ├─bookkeeper

│ │ ├─clickhouse

│ │ ├─elasticsearch

│ │ ├─flink

│ │ ├─k8s

│ │ ├─kafka

│ │ ├─kong

│ │ ├─mongodb

│ │ ├─mysql

│ │ ├─nginx

│ │ ├─postgresql

│ │ ├─pulsar

│ │ ├─rabbitmq

│ │ ├─redis

│ │ └─rocketmq

│ ├─telegraf-rules

│ ├─ui-initialized-templates

│ │ ├─activemq

│ │ ├─apisix

│ │ ├─aws_dynamodb

│ │ ├─aws_eks

│ │ ├─aws_gateway

│ │ ├─aws_s3

│ │ ├─banyandb

│ │ ├─bookkeeper

│ │ ├─browser

│ │ ├─cilium_service

│ │ ├─clickhouse

│ │ ├─custom

│ │ ├─elasticsearch

│ │ ├─flink

│ │ ├─general

│ │ ├─k8s

│ │ ├─k8s_service

│ │ ├─kafka

│ │ ├─kong

│ │ ├─mesh

│ │ ├─mesh_cp

│ │ ├─mesh_dp

│ │ ├─mongodb

│ │ ├─mysql

│ │ ├─nginx

│ │ ├─os_linux

│ │ ├─os_windows

│ │ ├─postgresql

│ │ ├─pulsar

│ │ ├─rabbitmq

│ │ ├─redis

│ │ ├─rocketmq

│ │ ├─so11y_go_agent

│ │ ├─so11y_java_agent

│ │ ├─so11y_oap

│ │ ├─so11y_satellite

│ │ ├─virtual_cache

│ │ ├─virtual_database

│ │ └─virtual_mq

│ └─zabbix-rules

├─config-examples

├─licenses

│ └─ui-licenses

├─logs

├─oap-libs

├─tools

│ ├─data-generator

│ │ ├─bin

│ │ └─config

│ └─profile-exporter

└─webapp

然后去bin中运行oapService.bat结果就不行了,因为没有配置数据库

试了推荐的h2,不好用,因为已经移除了,另外sqlite的也被移除了,如果想用最好降低版本

storage 在 10.4.0 中支持?
h2 ❌ 已被删除
sqlite ❌ 已被删除
elasticsearch ✅ 支持(推荐)
banyandb ✅ 支持

如果你必须用 SQLite(开发轻量环境),请退回到 SkyWalking 10.2.0

本机正好有mysql 8.0.30,就试一下,下载地址https://dev.mysql.com/downloads/

改进D:\IdeaProjects\skywalking-full\dist\apache-skywalking-apm-bin\config\application.yml

复制代码
storage:
  selector: mysql
    mysql:
    properties:
      jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true&allowMultiQueries=true"}
      dataSource.user: ${SW_DATA_SOURCE_USER:root}
      dataSource.password: ${SW_DATA_SOURCE_PASSWORD:你的数据库密码}
      dataSource.cachePrepStmts: ${SW_DATA_SOURCE_CACHE_PREP_STMTS:true}
      dataSource.prepStmtCacheSize: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_SIZE:250}
      dataSource.prepStmtCacheSqlLimit: ${SW_DATA_SOURCE_PREP_STMT_CACHE_SQL_LIMIT:2048}
      dataSource.useServerPrepStmts: ${SW_DATA_SOURCE_USE_SERVER_PREP_STMTS:true}
    metadataQueryMaxSize: ${SW_STORAGE_MYSQL_QUERY_MAX_SIZE:5000}
    maxSizeOfBatchSql: ${SW_STORAGE_MAX_SIZE_OF_BATCH_SQL:2000}
    asyncBatchPersistentPoolSize: ${SW_STORAGE_ASYNC_BATCH_PERSISTENT_POOL_SIZE:4}

并下载 https://downloads.mysql.com/archives/c-j/中的库,解压缩

把mysql-connector-java-8.0.30.jar放到

D:\IdeaProjects\skywalking-full\dist\apache-skywalking-apm-bin\oap-libs

配置好后,使用mysql命令行

复制代码
CREATE DATABASE swtest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

如果不创建上面的数据库表, HikariCP 连接池初始化失败,OAP 直接退出。

另外下载一个mysql可视化的软件

https://dbeaver.io/download/

如果有什么错,看一下dist\apache-skywalking-apm-bin\logs中的

skywalking-oap-server.log

如果这个窗口一直不关就是成功 了,另外上面日志没有啥堆栈错误基本就可以了,

然后运行webappService.bat

然后访问localhost:8080就出来了

针对apm-protocol/apm-network模块的处理方法,

清空 SkyWalking apm-network 模块的 target/ 目录有 3 种稳定方式,其中 最推荐的是使用 Maven clean,不会误删其它内容。


✅ 方法 1 ------ Maven 官方、最标准方式(推荐)

进入 SkyWalking 根目录执行:

复制代码
mvn -pl apm-protocol/apm-network clean

作用:

✔ 只清理 apm-network

✔ 删除整个 target/ 目录

✔ 同步清除生成的 Java 代码、class、编译缓存

✘ 不会影响其他模块

非常安全 → 最常用于改 .proto 后重编。


✅ 方法 2 ------ 进入模块目录执行 clean

复制代码
cd apm-protocol/apm-network
mvn clean

效果完全相同:

复制代码
rm -rf apm-protocol/apm-network/target/

⚡ 方法 3 ------ 手动删除(Linux 或 WSL)

复制代码
rm -rf apm-protocol/apm-network/target

或 Windows PowerShell:

复制代码
Remove-Item -Recurse -Force apm-protocol\apm-network\target

⚠ 手动删除适用于目录被占用无法 clean 时。


mvn -pl 是 Maven 中非常重要的参数,作用是:

👉 -pl = --projects 表示"只构建某些模块(project list)"

简单说,它允许你在多模块项目中 指定某一个或多个模块单独构建,而不是编译整个工程。

如重新生成apm-protocol/apm-network/target下的代码,使用

复制代码
mvn -pl apm-protocol/apm-network compile

就会重新生成target代码

上面执行的clean ,compile是和双击右边的mvn对应选项是等效的

另外双击后在命令行窗口中看到的命令就是实际执行的,

把下面这个复制到 cmd的终端中也可以编译了

下面的是compile指令

复制代码
C:\jdk-17\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\IdeaProjects\skywalking-full -Djansi.passthrough=true -Dmaven.home=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4 -Dclassworlds.conf=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\lib\idea_rt.jar=57095" -Dfile.encoding=UTF-8 -classpath C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds-2.6.0.jar;C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2025.1.4.1 compile

下面的是clean指令

复制代码
C:\jdk-17\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\IdeaProjects\skywalking-full -Djansi.passthrough=true -Dmaven.home=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4 -Dclassworlds.conf=C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\bin\m2.conf "-Dmaven.ext.class.path=C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2025.1.4.1\lib\idea_rt.jar=55909" -Dfile.encoding=UTF-8 -classpath C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds-2.6.0.jar;C:\Users\VISION16Pro\.m2\wrapper\dists\apache-maven-3.8.4-bin\52ccbt68d252mdldqsfsn03jlf\apache-maven-3.8.4\boot\plexus-classworlds.license org.codehaus.classworlds.Launcher -Didea.version=2025.1.4.1 clean
相关推荐
p***23361 天前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
D***M9761 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
u***27612 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
N***H4863 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
z***02603 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
s***41133 天前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
2509_940880223 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
n***F8754 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
r***11334 天前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking