Sign inSign up

power4j/mvnd

By power4j

Updated 6 months ago

Docker images for Apache Maven Daemon (`mvnd`) with multi-JDK support

Image
Integration & delivery
Developer tools
1

1.7K

power4j/mvnd repository overview

MVND Docker Images

Docker images for Apache Maven Daemon (mvnd) with multi-JDK support, enabling fast Maven project builds in containerized environments.

🚀 Quick Start

Pull Images
# Use JDK 17 (Recommended)
docker pull power4j/mvnd:1.0.5-temurin-17-jdk-jammy

# Use JDK 8
docker pull power4j/mvnd:1.0.5-temurin-8-jdk-jammy

# Use JDK 11
docker pull power4j/mvnd:1.0.5-temurin-11-jdk-jammy

# Use JDK 21
docker pull power4j/mvnd:1.0.5-temurin-21-jdk-jammy

# Use JDK 22
docker pull power4j/mvnd:1.0.5-temurin-22-jdk-jammy
Basic Usage
# Test
docker run --rm  power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd -v

# Run in Maven project directory
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install

# Or use alias to simplify commands
alias mvnd='docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd'
mvnd clean install

📦 Available Images

Image Tag Format
power4j/mvnd:{mvnd-version}-{jdk-type}

For architecture-specific tags:

power4j/mvnd:{mvnd-version}-{jdk-type}-amd64
power4j/mvnd:{mvnd-version}-{jdk-type}-aarch64

The unsuffixed tag is reserved for the multi-arch manifest generated by the release workflow when cpu_arch=all.

Supported JDK Versions
JDK VersionImage TagBase ImageRecommended Use
JDK 8temurin-8-jdk-jammyeclipse-temurin:8-jdk-jammyLegacy project compatibility
JDK 11temurin-11-jdk-jammyeclipse-temurin:11-jdk-jammyLTS version
JDK 17temurin-17-jdk-jammyeclipse-temurin:17-jdk-jammyRecommended LTS version
JDK 21temurin-21-jdk-jammyeclipse-temurin:21-jdk-jammyLatest LTS version
JDK 22temurin-22-jdk-jammyeclipse-temurin:22-jdk-jammyLatest version
Supported mvnd Versions
  • 1.0.5 (current default, includes Linux Arm64 asset)
  • Other versions available at GitHub Releases

💡 Usage Examples

1. Build Projects
# Clean and build
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install

# Skip tests
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install -DskipTests
2. Run Tests
# Run all tests
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd test

# Run specific test
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd test -Dtest=MyTestClass
3. Package Applications
# Package as JAR
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd package

# Package as WAR
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd package -Pwar
4. Deploy to Repository
# Deploy to local repository
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd deploy

# Deploy to remote repository
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd deploy -DaltDeploymentRepository=remote-repo::default::https://your-repo.com

🔧 Advanced Usage

Custom Maven Settings
# Use custom settings.xml
docker run --rm \
  -v $(pwd):/workspace \
  -v ~/.m2/settings.xml:/root/.m2/settings.xml \
  -w /workspace \
  power4j/mvnd:1.0.5-temurin-17-jdk-jammy \
  mvnd clean install -s /root/.m2/settings.xml
Maven Profiles
# Use specific profile
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install -Pproduction

# Use multiple profiles
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install -Pdev,test
JVM Arguments
# Set memory limits
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install -Dmvnd.jvmargs="-Xmx2g -Xms1g"

# Set system properties
docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install -Dspring.profiles.active=prod

🐳 Docker Compose Integration

Create docker-compose.yml:

version: '3.8'
services:
  mvnd:
    image: power4j/mvnd:1.0.5-temurin-17-jdk-jammy
    volumes:
      - .:/workspace
      - ~/.m2:/root/.m2
    working_dir: /workspace
    command: mvnd clean install

Run:

docker-compose up

🔍 Troubleshooting

Common Issues
  1. Permission Issues

    # Ensure current user has read/write permissions on project directory
    sudo chown -R $(id -u):$(id -g) .
    
  2. Maven Repository Cache

    # Clean Maven local repository
    docker run --rm -v $(pwd):/workspace -w /workspace power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean
    
  3. Network Issues

    # Use proxy settings
    docker run --rm -v $(pwd):/workspace -w /workspace \
      -e HTTP_PROXY=http://proxy:port \
      -e HTTPS_PROXY=http://proxy:port \
      power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd clean install
    
Check Versions
# Check mvnd version
docker run --rm power4j/mvnd:1.0.5-temurin-17-jdk-jammy mvnd --version

# Check Java version
docker run --rm power4j/mvnd:1.0.5-temurin-17-jdk-jammy java --version

🤝 Contributing

Issues and Pull Requests are welcome! 👉 https://github.com/power4j/mvnd-docker

📄 License

This project is licensed under the Apache License 2.0.

Tag summary

Content type

Image

Digest

sha256:49950d8cd

Size

241.9 MB

Last updated

6 months ago

docker pull power4j/mvnd:1.0.5-temurin-22-jdk-jammy