Boa noite pessoal,
Estou trabalhando em um projeto onde o maven tem de ser chamado para criar um novo projeto, mas de dentro do Java. Gostaria de perguntar para vocês se alguém tem idéia de como fazer isso. Até agora já testei os seguintes códigos sem sucesso:
public static void main(String[] args) throws IOException, InterruptedException {
Process p = null;
String comando = "C:/Program Files/Apache Software Foundation/apache-maven-3.0.4/bin/mvn.bat archetype:generate -DgroupId=br.com.serjava.projetomaven -DartifactId=projeto-maven -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=1 interactive -e";
try {
p = Runtime.getRuntime().exec(comando);
} 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);
}
}
}
O problema deste código é que não sei como criar uma pasta e posicionar o maven lá para criar o projeto e nem pular a confirmação das configurações. Tipo… Para nesta parte:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] Using property: groupId = br.com.serjava.projetomaven
[INFO] Using property: artifactId = projeto-maven
[INFO] Using property: version = 1
[INFO] Using property: package = br.com.serjava.projetomaven
Confirm properties configuration:
groupId: br.com.serjava.projetomaven
artifactId: projeto-maven
version: 1
package: br.com.serjava.projetomaven
Tentei criar um batzinho para fazer o java invocar, mas continuo com o mesmo problema da confirmação. Usando um .bat eu consigui criar uma pasta e posicionar o maven lá, mas não consigo pular a confirmação.
Agradeço a todos que puderem ajudar.
Inté…
Obs: Aceito qualquer idéia, pois depois a idéia é através do java ainda invocar o maven para o mesmo fazer a compilação do projeto