2017-11-08 6 views
0

실행중인 시스템에 maven을 설치하지 않고 go lang을 사용하여 maven을 실행해야한다는 요구 사항이 있습니다. goos.exec 패키지를 사용하면 이미 내 PATH 변수에 정의 된 프로그램을 실행할 수 있습니다. 그러나 M2_HOMEPATH 변수로 설정하는 것은 여기서는 옵션이 아니며 특정 위치에서 maven 배포를 추출하도록하고 있습니다. here에 주어진 대답에 따르면 mvn이라는 특정 위치를 제공하여 maven 빌드를 실행하는 것이 가능하며, 어떻게하면 go에서 동일한 결과를 얻을 수 있습니까? @putu에 의해 주석과 마찬가지로 및 maven를 설치하거나 $PATH 변수에 M2_HOME을 설정하지 않고 내가 maven 빌드를 실행할 수 있었다 exe.Command()에 별도의 인수로 하나 필요한 maven 목표 하나를 지정와 사전go lang 코드에서 빌드를 실행하는 방법

+1

어떤 OS입니까? 특정 위치의 * 전체 경로 *를'exec.Command' 인수에 전달하려고 했습니까? 'your/specific/folder/mvn'? 명령을 실행하기위한 코드 스 니펫을 제공 한 다음 오류가 있으면 오류 메시지를 표시하십시오. – putu

+0

'maven'이 이미 대상 컴퓨터에 설치되어 있다고 가정합니까, 아니면'maven' 배포본을 소프트웨어와 함께 번들링합니까? –

+0

[os.ExpandEnv] (https://golang.org/pkg/os/#ExpandEnv)도 참조하십시오. – Peter

답변

0

에서
감사합니다. 아래는 동일한 목표를 달성하려는 모든 사람들을위한 코드입니다.

// Use os package to run the maven build using location where maven(headless) resides 
func updateDistribution() error { 
    command := exec.Command("apache-maven-3.5.2/bin/mvn", "clean", "install") 
    command.Dir = "." 
    output, err := command.Output() 
    if err != nil { 
     return err 
    } 
    fmt.Printf("%s", output) 
    return nil 
}