3

サーバー側で手順を自動化するための Java プログラムを作成しています。通常、デスクトップ/GIT/ に移動し、この Maven コマンド「mvn integration-test -DskipTests -P interactive -e」を使用します。

私はJavaプログラムを構築していて、そのコマンドラインを実行しようとしていますが、これまでのところ成功していません.

これまでのところ、コードは次のとおりです。

public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub 

Process theProcess = null;


try
  {
      theProcess = Runtime.getRuntime().exec("mvn integration-test -DskipTests -P interactive -e");
  }
 catch(IOException e)
  {
     System.err.println("Error on exec() method");
     e.printStackTrace();  
  }

// read from the called program's standard output stream
  try
  {
     inStream = new BufferedReader(new InputStreamReader( theProcess.getInputStream()));  
     System.out.println(inStream.readLine());
  }
  catch(IOException e)
  {
     System.err.println("Error on inStream.readLine()");
     e.printStackTrace();  
  }

break;

    }

}

in.close();
}
4

5 に答える 5

3

Maven Embedderをチェックアウトする必要があります。これは、Maven を埋め込む場合に使用する必要があるツールです。


OK どうやら maven エンベダーはサポートされなくなりました。おそらくまだ動作させることができますが、動作するはずの小さなサンプルを作成しました。もちろん、Maven のパスを置き換えます。

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Q {

public static void main(String[] args) throws IOException, InterruptedException {

    Process p = null;

    try {
        p = Runtime.getRuntime().exec("C:/Applications/apache-maven-3.0.3/bin/mvn.bat integration-test -DskipTests -P interactive -e");
    } catch (IOException e) {
        System.err.println("Error on exec() method");
        e.printStackTrace();
    }

    copy(p.getInputStream(), System.out);
    p.waitFor();

}

static void copy(InputStream in, OutputStream out) throws IOException {
    while (true) {
        int c = in.read();
        if (c == -1)
            break;
        out.write((char) c);
    }
}
}
于 2012-04-25T10:44:08.587 に答える
1

Windowsの場合、これを試してください

Process p=Runtime.getRuntime().exec("cmd.exe /c mvn install:install-file -Dfile=C:\\Users\\Desktop\\Desktop\\sqljdbc4-4.0.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0");

Linux の場合**"cmd.exe /c"**は必要ありません。

于 2013-04-15T08:56:40.790 に答える
1

他の構成オプションで実行する場合は、Jenkinsを継続的統合ツールとして試してください。これは無料で、Tomcat で使用できます。

于 2012-04-25T10:46:59.683 に答える
1

次のコードを使用して mvn を実行することができました: (私はこのコマンドを使用します: Runtime.getRuntime().exec(cmd);)

    import java.io.*;
    import java.util.ArrayList;


    public class RunMvnFromJava     {
            static public String[] runCommand(String cmd)throws IOException
{

                // The actual procedure for process execution:
                //runCommand(String cmd);
                // Create a list for storing output.
                ArrayList list = new ArrayList();
                // Execute a command and get its process handle
                Process proc = Runtime.getRuntime().exec(cmd);
                // Get the handle for the processes InputStream
                InputStream istr = proc.getInputStream();
                // Create a BufferedReader and specify it reads
                // from an input stream.

                BufferedReader br = new BufferedReader(new InputStreamReader(istr));
                String str; // Temporary String variable
                // Read to Temp Variable, Check for null then
                // add to (ArrayList)list
                while ((str = br.readLine()) != null) 
                    list.add(str);
                    // Wait for process to terminate and catch any Exceptions.
                        try { 
                            proc.waitFor(); 
                            }
                        catch (InterruptedException e) {
                            System.err.println("Process was interrupted"); 
                            }
                        // Note: proc.exitValue() returns the exit value.
                        // (Use if required)
                        br.close(); // Done.
                        // Convert the list to a string and return
                        return (String[])list.toArray(new String[0]);
}
// Actual execution starts here
            public static void main(String args[]) throws IOException
            {
                try
                {
                    // Run and get the output.
                    String outlist[] = runCommand("mvn integration-test -DskipTests -P interactive -e");
                    // Print the output to screen character by character.
                    // Safe and not very inefficient.
                    for (int i = 0; i < outlist.length; i++)
                        System.out.println(outlist[i]);
                }   
                catch (IOException e) { 
                    System.err.println(e); 
                }
            }
}
于 2012-04-26T08:13:20.600 に答える