/** * Copyright (C) 2015 Orange * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.francetelecom.clara.cloud.mvn.consumer.maven; import com.francetelecom.clara.cloud.commons.MavenReference; import com.francetelecom.clara.cloud.commons.TechnicalException; import com.francetelecom.clara.cloud.mvn.consumer.MvnConsumerConfigurer; import com.francetelecom.clara.cloud.mvn.consumer.MvnRepoDaoImpl; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.maven.model.Model; import org.apache.maven.model.io.DefaultModelWriter; import java.io.File; import java.io.IOException; import java.io.StringWriter; public class PomGenerator { private static Logger logger = LoggerFactory.getLogger(MvnRepoDaoImpl.class); public PomGenerator(MvnConsumerConfigurer mvnConsumerConfigurer) { } public File generatePom(File projectDirectory, MavenReference mavenReference) throws IOException { if (projectDirectory == null) { throw new IllegalArgumentException("projectDirectory cannot be null"); } if (mavenReference == null) { throw new IllegalArgumentException("mavenReference cannot be null"); } if (!projectDirectory.exists()) { FileUtils.forceMkdir(projectDirectory); } Model project = new Model(); project.setModelVersion("4.0.0"); project.setGroupId(mavenReference.getGroupId()); project.setArtifactId(mavenReference.getArtifactId()); project.setVersion(mavenReference.getVersion()); project.setPackaging(mavenReference.getExtension()); project.setName(mavenReference.getArtifactId() + " (" + mavenReference.getExtension() + ")" ); String pom = modelToStringXml(project); logger.debug("generated pom : \n" + pom); File pomFile = new File(projectDirectory.getAbsolutePath() + "/pom.xml"); FileUtils.writeStringToFile(pomFile, pom); return pomFile; } /** * Generate a pom.xml file from a MavenProject description * @return */ private String modelToStringXml(Model model) { DefaultModelWriter modelWriter = new DefaultModelWriter(); StringWriter output = new StringWriter(); String result = ""; try { modelWriter.write(output, null, model); result = output.getBuffer().toString(); } catch (IOException e) { logger.error("Cannot convert model to pom: " + e.getMessage()); throw new TechnicalException("Cannot convert model to pom", e); } return result; } }