7.2 KiB
WxJava - WeChat Java SDK Development Instructions
WxJava is a comprehensive WeChat Java SDK supporting multiple WeChat platforms including Official Accounts (公众号), Mini Programs (小程序), WeChat Pay (微信支付), Enterprise WeChat (企业微信), Open Platform (开放平台), and Channel/Video (视频号). This is a Maven multi-module project with Spring Boot and Solon framework integrations.
ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the information here.
Working Effectively
Prerequisites and Environment Setup
- Java Requirements: JDK 8+ required (project uses Java 8 as minimum target)
- Maven: Maven 3.6+ recommended (Maven 3.9.11 validated)
- IDE: IntelliJ IDEA recommended (project optimized for IDEA)
Bootstrap, Build, and Validate
Execute these commands in sequence after cloning:
# 1. Basic compilation (NEVER CANCEL - takes 4-5 minutes)
mvn clean compile -DskipTests=true --no-transfer-progress
# Timeout: Set 8+ minutes. Actual time: ~4 minutes
# 2. Full package build (NEVER CANCEL - takes 2-3 minutes)
mvn clean package -DskipTests=true --no-transfer-progress
# Timeout: Set 5+ minutes. Actual time: ~2 minutes
# 3. Code quality validation (NEVER CANCEL - takes 45-60 seconds)
mvn checkstyle:check --no-transfer-progress
# Timeout: Set 3+ minutes. Actual time: ~50 seconds
CRITICAL TIMING NOTES:
- NEVER CANCEL any Maven build command
- Compilation phase takes longest (~4 minutes) due to 34 modules
- Full builds are faster on subsequent runs due to incremental compilation
- Always use
--no-transfer-progress
to reduce log noise
Testing Structure
- Test Framework: TestNG (not JUnit)
- Test Files: 298 test files across all modules
- Default Behavior: Tests are DISABLED by default in pom.xml (
<skip>true</skip>
) - Test Configuration: Tests require external WeChat API credentials via test-config.xml files
- DO NOT attempt to run tests without proper WeChat API credentials as they will fail
Project Structure and Navigation
Core SDK Modules (Main Development Areas)
weixin-java-common/
- Common utilities and base classes (most important)weixin-java-mp/
- WeChat Official Account SDK (公众号)weixin-java-pay/
- WeChat Pay SDK (微信支付)weixin-java-miniapp/
- Mini Program SDK (小程序)weixin-java-cp/
- Enterprise WeChat SDK (企业微信)weixin-java-open/
- Open Platform SDK (开放平台)weixin-java-channel/
- Channel/Video SDK (视频号)weixin-java-qidian/
- Qidian SDK (企点)
Framework Integration Modules
spring-boot-starters/
- Spring Boot auto-configuration starterssolon-plugins/
- Solon framework pluginsweixin-graal/
- GraalVM native image support
Configuration and Quality
quality-checks/google_checks.xml
- Checkstyle configuration.editorconfig
- Code formatting rules (2 spaces = 1 tab)pom.xml
- Root Maven configuration
Development Workflow
Making Code Changes
-
Always build first to establish clean baseline:
mvn clean compile --no-transfer-progress
-
Follow code style (enforced by checkstyle):
- Use 2 spaces for indentation (not tabs)
- Follow Google Java Style Guide
- Install EditorConfig plugin in your IDE
-
Validate changes incrementally:
# After each change: mvn compile --no-transfer-progress mvn checkstyle:check --no-transfer-progress
Before Submitting Changes
ALWAYS run these validation steps in sequence:
-
Code Style Validation:
mvn checkstyle:check --no-transfer-progress # Must pass - takes ~50 seconds
-
Full Clean Build:
mvn clean package -DskipTests=true --no-transfer-progress # Must succeed - takes ~2 minutes
-
Documentation: Update javadoc for public methods and classes
-
Contribution Guidelines: Follow
CONTRIBUTING.md
- PRs must targetdevelop
branch
Module Dependencies and Build Order
Core Module Dependencies (Build Order)
weixin-graal
(GraalVM support)weixin-java-common
(foundation for all other modules)- Core SDK modules (mp, pay, miniapp, cp, open, channel, qidian)
- Framework integrations (spring-boot-starters, solon-plugins)
Key Relationship Patterns
- All SDK modules depend on
weixin-java-common
- Spring Boot starters depend on corresponding SDK modules
- Solon plugins follow same pattern as Spring Boot starters
- Each module has both single and multi-account configurations
Common Tasks and Commands
Validate Specific Module
# Build single module (replace 'weixin-java-mp' with target module):
cd weixin-java-mp
mvn clean compile --no-transfer-progress
Check Dependencies
# Analyze dependencies:
mvn dependency:tree --no-transfer-progress
# Check for dependency updates:
./others/check-dependency-updates.sh
Release and Publishing
# Version check:
mvn versions:display-property-updates --no-transfer-progress
# Deploy (requires credentials):
mvn clean deploy -P release --no-transfer-progress
Important Files and Locations
Configuration Files
pom.xml
- Root Maven configuration with dependency managementquality-checks/google_checks.xml
- Checkstyle rules.editorconfig
- IDE formatting configuration.github/workflows/maven-publish.yml
- CI/CD pipeline
Documentation
README.md
- Project overview and usage (Chinese)CONTRIBUTING.md
- Development contribution guidelinesdemo.md
- Links to demo projects and examples- Each module has dedicated documentation and examples
Test Resources
*/src/test/resources/test-config.sample.xml
- Template for test configuration- Tests require real WeChat API credentials to run
SDK Usage Patterns
Maven Dependency Usage
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId> <!-- or other modules -->
<version>4.7.0</version>
</dependency>
Common Development Areas
- API Client Implementation: Located in
*/service/impl/
directories - Model Classes: Located in
*/bean/
directories - Configuration: Located in
*/config/
directories - Utilities: Located in
*/util/
directories in weixin-java-common
Troubleshooting
Build Issues
- OutOfMemoryError: Increase Maven memory:
export MAVEN_OPTS="-Xmx2g"
- Compilation Failures: Usually dependency issues - run
mvn clean
first - Checkstyle Failures: Check
.editorconfig
settings in IDE
Common Gotchas
- Tests Always Skip: This is normal - tests require WeChat API credentials
- Multi-Module Changes: Always build from root, not individual modules
- Branch Target: PRs must target
develop
branch, notmaster
/release
Performance Notes
- First Build: Takes 4-5 minutes due to dependency downloads
- Incremental Builds: Much faster (~30-60 seconds)
- Checkstyle: Runs quickly (~50 seconds) and should be run frequently
- IDE Performance: Project uses Lombok - ensure annotation processing is enabled
Remember: This is a SDK library project, not a runnable application. Changes should focus on API functionality, not application behavior.