Maven dependency management for non-Maven/Gradle Java projects. Manage dependencies via app.yml and symlinked deps/ directory.
A Java 11+ Maven-based command line tool for managing Maven dependencies in non-Maven/Gradle Java projects. Creates symbolic links to dependencies and manages app.yml configuration files.
This skill provides GitHub Copilot with comprehensive knowledge of the jpm (Java Package Manager) project structure, build system, and development workflow. It enables Copilot to assist with building, testing, and extending jpm's functionality for managing Maven dependencies in projects that don't use traditional build systems.
**CRITICAL**: Always make mvnw executable first:
```bash
chmod +x mvnw
```
Build and format code:
```bash
./mvnw spotless:apply clean install
```
Quick rebuild after changes:
```bash
./mvnw clean verify
```
CI build with release assembly:
```bash
./mvnw -B verify jreleaser:assemble -Prelease
```
**ALWAYS** run formatting before committing:
```bash
./mvnw spotless:apply
```
Check formatting only:
```bash
./mvnw spotless:check
```
**NEVER commit code without running spotless:apply first** - the CI (.github/workflows/ci.yml) will fail.
**Important**: No unit tests exist - the Maven test phase skips with "No tests to run".
Run jpm using the binary distribution:
```bash
./target/binary/bin/jpm [commands]
```
Run jpm using the CLI jar:
```bash
java -jar target/jpm-0.4.1-cli.jar [commands]
```
Always manually validate jpm functionality after making changes:
1. Build the project:
```bash
./mvnw spotless:apply clean install
```
2. Test help:
```bash
./target/binary/bin/jpm --help
```
3. Test version:
```bash
./target/binary/bin/jpm --version
```
4. Create test directory:
```bash
mkdir -p /tmp/jpm-test && cd /tmp/jpm-test
```
5. Test copy functionality:
```bash
[repo-path]/target/binary/bin/jpm copy com.github.lalyos:jfiglet:0.0.9
```
- Verify: Creates `deps/` directory with symlink to jar
6. Test install functionality:
```bash
[repo-path]/target/binary/bin/jpm install com.github.lalyos:jfiglet:0.0.9
```
- Verify: Creates `app.yml` file with dependency entry
7. Test path command:
```bash
[repo-path]/target/binary/bin/jpm path
```
- Verify: Outputs classpath to dependency jars
8. Test complete Java workflow:
```java
// Create HelloWorld.java
import com.github.lalyos.jfiglet.FigletFont;
public class HelloWorld {
public static void main(String[] args) throws Exception {
System.out.println(FigletFont.convertOneLine("Hello, World!"));
}
}
```
- Run: `java -cp "deps/*" HelloWorld.java`
- Verify: ASCII art output is displayed correctly
**Note**: The `jpm search` command may fail with YAML parsing errors in some network environments. Focus testing on copy, install, and path commands.
**Key Directories:**
- `Main.java` - CLI entry point with PicoCLI commands (Copy, Search, Install, PrintPath)
- `Jpm.java` - Core business logic for artifact resolution and management
- `util/` - Utility classes (FileUtils, ResolverUtils, SearchUtils, etc.)
- `json/` - AppInfo class for app.yml file handling
**Important Files:**
**Key Build Products:**
**For users**: Use `target/jpm-0.4.1-cli.jar` or `target/binary/` directory
**For development**: Use `./target/binary/bin/jpm` for testing
List repository root files:
```bash
ls -la
```
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/jpm-java-package-manager/raw