📄 josgeneratepumojo.java
字号:
package org.mortbay.jetty.openspaces.plugin;/*======================================================================== * $Id:$ * Copyright 2000-2008 Mort Bay Consulting Pty. Ltd. *------------------------------------------------------------------------ * 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. *======================================================================== */import java.io.File;import java.io.IOException;import java.util.Iterator;import org.apache.maven.artifact.Artifact;import org.apache.maven.plugin.AbstractMojo;import org.apache.maven.plugin.MojoExecutionException;import org.apache.maven.plugin.MojoFailureException;import org.codehaus.plexus.archiver.ArchiverException;import org.codehaus.plexus.archiver.jar.JarArchiver;import org.codehaus.plexus.util.FileUtils;/* todo: * allow mechanism for specifying other artifacts to be included in the pu jar * artifact name that implies its a pu? * *//** * Simple plugin that takes a bundled war file, a pu.xml file and the jetty dependencies of this plugin * itself to create an artifact suitable for deployment with os:deploy * * @goal generate-pu * @requiresDependencyResolution runtime * @phase package * @description Generates an openspaces PU for a war project */public class JOSGeneratePUMojo extends AbstractMojo{ /** * @parameter expression="${project.build.directory}/${project.artifactId}-${project.version}.war" */ private String warFile; /** * @parameter expression="src/main/openspaces/pu.xml" */ private String puXMLFile; /** * @parameter expression="${project.build.directory}/${project.artifactId}-${project.version}-pu" */ private String serverDirectory; /** * @parameter expression="${project.build.directory}/${project.artifactId}-${project.version}.jar" */ private String artifactName; /** * @parameter expression="${plugin.artifacts}" */ private java.util.List pluginArtifacts; /** * The Jar archiver. * * @parameter expression="${component.org.codehaus.plexus.archiver.Archiver#jar}" * @required */ private JarArchiver jarArchiver; /** * */ public void execute() throws MojoExecutionException, MojoFailureException { if ( puXMLFile == null || !FileUtils.fileExists( puXMLFile ) ) { throw new MojoExecutionException( "missing pu.xml file" ); } if ( warFile == null || !FileUtils.fileExists( warFile ) ) { throw new MojoExecutionException( "missing war file" ); } try { String puTargetDir = serverDirectory + File.separator + "META-INF" + File.separator + "spring"; String libTargetDir = serverDirectory + File.separator + "lib"; FileUtils.mkdir( serverDirectory ); FileUtils.mkdir( puTargetDir ); FileUtils.mkdir( libTargetDir ); FileUtils.copyFileToDirectory( new File( puXMLFile ), new File( puTargetDir ) ); FileUtils.copyFileToDirectory( new File( warFile ), new File( serverDirectory ) ); for (Iterator artifactIterator = pluginArtifacts.iterator(); artifactIterator.hasNext();) { Artifact artifact = (Artifact) artifactIterator.next(); if (artifact.getGroupId().equals("org.mortbay.jetty") ) { FileUtils.copyFileToDirectory( artifact.getFile().getPath(), libTargetDir ); } } jarArchiver.addDirectory( new File(serverDirectory) ); jarArchiver.setDestFile( new File(artifactName) ); jarArchiver.createArchive(); } catch ( IOException ioe ) { throw new MojoExecutionException( "unable to assemble",ioe ); } catch ( ArchiverException ae ) { throw new MojoExecutionException( "unable to assembly jar", ae ); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -