Skip to content

To facilitate manipulating Mavn in Go, it will detect and use a locally installed Mavn instance to execute commands.

License

Notifications You must be signed in to change notification settings

scagogogo/mvn-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Maven SDK

Language: English | 中文

1. What is this?

A Go SDK for conveniently operating mvn in Go. It detects and uses the locally installed mvn to execute commands.

2. Installation

go get -u github.com/scagogogo/mvn-sdk

3. Documentation

Full API documentation is available at: https://scagogogo.github.io/mvn-sdk/

4. Examples

Find locally installed mvn:

package main

import (
	"fmt"
	"github.com/scagogogo/mvn-sdk/pkg/finder"
)

func main() {
	maven, err := finder.FindMaven()
	if err != nil {
		panic(err)
	}
	fmt.Println(fmt.Sprintf("Maven executable path: %s", maven))
	// Output:
	// Maven executable path: mvn
}

Local repository directory:

package main

import (
	"fmt"
	"github.com/scagogogo/mvn-sdk/pkg/finder"
	"github.com/scagogogo/mvn-sdk/pkg/local_repository"
)

func main() {
	maven, err := finder.FindMaven()
	if err != nil {
		panic(err)
	}
	directory := local_repository.ParseLocalRepositoryDirectory(maven)
	fmt.Println(fmt.Sprintf("Local repository location: %s", directory))
	// Output:
	// Local repository location: C:\Users\5950X\.m2\repository
}

Find JAR file location:

package main

import (
	"fmt"
	"github.com/scagogogo/mvn-sdk/pkg/finder"
	"github.com/scagogogo/mvn-sdk/pkg/local_repository"
)

func main() {
	maven, err := finder.FindMaven()
	if err != nil {
		panic(err)
	}
	directory := local_repository.ParseLocalRepositoryDirectory(maven)
	jar, err := local_repository.FindJar(directory, "com.alibaba", "fastjson", "2.0.2")
	if err != nil {
		panic(err)
	}
	fmt.Println(fmt.Sprintf("JAR file location: %s", jar))
	// Output:
	// JAR file location: C:\Users\5950X\.m2\repository\com\alibaba\fastjson\2.0.2\fastjson-2.0.2.jar
}

Download JAR files. Note that if you have configured certain mirror repositories, the JAR files in the mirror repositories may not be complete:

package main

import (
	"fmt"
	"github.com/scagogogo/mvn-sdk/pkg/command"
	"github.com/scagogogo/mvn-sdk/pkg/finder"
)

func main() {
	maven, err := finder.FindMaven()
	if err != nil {
		panic(err)
	}
	stdout, err := command.DependencyGet(maven, "com.alibaba", "fastjson", "2.0.2")
	if err != nil {
		panic(err)
	}
	fmt.Println(stdout)
	// Output:
	// [INFO] Scanning for projects...
	//[INFO]
	//[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
	//[INFO] Building Maven Stub Project (No POM) 1
	//[INFO] --------------------------------[ pom ]---------------------------------
	//[INFO]
	//[INFO] --- maven-dependency-plugin:2.8:get (default-cli) @ standalone-pom ---
	//[INFO] Resolving com.alibaba:fastjson:jar:2.0.2 with transitive dependencies
	//Downloading from alimaven: http://maven.aliyun.com/nexus/content/groups/public/com/alibaba/fastjson/1.2.80/fastjson-1.2.80.pom
	//Downloaded from alimaven: http://maven.aliyun.com/nexus/content/groups/public/com/alibaba/fastjson/1.2.80/fastjson-1.2.80.pom (10 kB at 24 kB/s)
	// ...[truncated]
}

Execute arbitrary commands:

package main

import (
	"fmt"
	"github.com/scagogogo/mvn-sdk/pkg/command"
	"github.com/scagogogo/mvn-sdk/pkg/finder"
)

func main() {
	maven, err := finder.FindMaven()
	if err != nil {
		panic(err)
	}
	stdout, err := command.ExecForStdout(maven, "-help")
	if err != nil {
		panic(err)
	}
	fmt.Println(stdout)
	// Output:
	// usage: mvn [options] [<goal(s)>] [<phase(s)>]
	//
	//Options:
	// -am,--also-make                        If project list is specified, also
	//                                        build projects required by the
	//                                        list
	// -amd,--also-make-dependents            If project list is specified, also
	//                                        build projects that depend on
	//                                        projects on the list
	// -B,--batch-mode                        Run in non-interactive (batch)
	//                                        mode (disables output color)
	// -b,--builder <arg>                     The id of the build strategy to
	//                                        use
	// -C,--strict-checksums                  Fail the build if checksums don't
	//                                        match
	// -c,--lax-checksums                     Warn if chec...[truncated]
}

About

To facilitate manipulating Mavn in Go, it will detect and use a locally installed Mavn instance to execute commands.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages