package org.codehaus.mojo.gwt; /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.util.Collection; import java.util.List; import java.util.Vector; import org.apache.maven.archiver.MavenArchiveConfiguration; import org.apache.maven.archiver.MavenArchiver; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.codehaus.plexus.archiver.Archiver; import org.codehaus.plexus.archiver.jar.JarArchiver; /** * Add GWT java source code and module descriptor as resources to project jar. Alternative * to gwt:resources for better Eclipse projects synchronization. * * @author <a href="mailto:vlads@pyx4j.com">Vlad Skarzhevskyy</a> * @deprecated use maven-source-plugin and sources classifier dependencies instead */ @Deprecated @Mojo(name = "source-jar", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true) public class GwtSourcesJarMojo extends GwtResourcesBaseMojo { /** * Name of the generated JAR. */ @Parameter(alias = "jarName", property = "jar.finalName", defaultValue = "${project.build.finalName}", required = true) private String finalName; @Parameter(defaultValue = "${project.build.directory}", required = true, readonly = true) private File outputDirectory; /** * The Jar archiver. */ @Component(role = Archiver.class, hint="jar") private JarArchiver jarArchiver; /** * The archive configuration to use. See <a * href="http://maven.apache.org/shared/maven-archiver/index.html">Maven Archiver Reference</a>. */ @Parameter private final MavenArchiveConfiguration archive = new MavenArchiveConfiguration(); /** * {@inheritDoc} * * @see org.apache.maven.plugin.Mojo#execute() */ public void execute() throws MojoExecutionException, MojoFailureException { File jarFile = new File( outputDirectory, finalName + ".jar" ); File origJarFile = new File( outputDirectory, finalName + "-b4gwt.jar" ); if ( origJarFile.exists() ) { if ( !origJarFile.delete() ) { throw new MojoExecutionException( "Error removing " + origJarFile ); } } if ( !jarFile.renameTo( origJarFile ) ) { throw new MojoExecutionException( "Error renaming " + jarFile + " to " + origJarFile ); } MavenArchiver archiver = new MavenArchiver(); archiver.setArchiver( jarArchiver ); archiver.setOutputFile( jarFile ); archive.setForced( false ); // It is already created by maven-jar-plugin archive.setAddMavenDescriptor( false ); Collection<ResourceFile> files = getAllResourceFiles(); try { // Avoid annoying messages in log "com/package/Ccc.java already added, skipping" List<String> jarExcludes = new Vector<String>(); // Add Sources first since they may already be present in jar from previous run and changed. for ( ResourceFile file : files ) { jarArchiver.addFile( new File( file.basedir, file.fileRelativeName ), file.fileRelativeName ); jarExcludes.add( file.fileRelativeName ); } // Add the context of original jar excluding resources that we just added base on GWT descriptors jarArchiver.addArchivedFileSet( origJarFile, null, jarExcludes.toArray( new String[jarExcludes.size()] ) ); archiver.createArchive( getProject(), archive ); } catch ( Exception e ) { throw new MojoExecutionException( "Error assembling JAR", e ); } } }