/* * 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.BufferedReader; import java.io.File; import java.io.IOException; import java.util.jar.*; import java.util.regex.*; import org.codehaus.plexus.util.*; try { File build; File mavenBuild; File mavenBuildProperties; // Webapp project build = new File( basedir, "build.xml" ); if ( build.isDirectory() || !build.exists() ) { System.err.println( "The file '" + build.getAbsolutePath() + "' is a directory or doesn't exist." ); return false; } mavenBuild = new File( basedir, "maven-build.xml" ); if ( mavenBuild.isDirectory() || !mavenBuild.exists() ) { System.err.println( "The file '" + mavenBuild.getAbsolutePath() + "' is a directory or doesn't exist." ); return false; } String xml = FileUtils.fileRead( mavenBuild, "UTF-8" ); Matcher m0 = Pattern.compile( " from ${maven.repo.local} for WAR libs" ); if ( !m0.find() ) { System.err.println( "FAILED!\n" + xml ); return false; } mavenBuildProperties = new File( basedir, "maven-build.properties" ); if ( mavenBuildProperties.isDirectory() || !mavenBuildProperties.exists() ) { System.err.println( "The file '" + mavenBuildProperties.getAbsolutePath() + "' is a directory or doesn't exist." ); return false; } warFile = new File( basedir, "target/ant-webapp-test.war" ); System.out.println( "Checking for existence of WAR file: " + warFile ); if ( !warFile.isFile() ) { System.err.println( "FAILED!" ); return false; } JarFile war = new JarFile( warFile ); String[] expected = { "index.jsp", "WEB-INF/web.xml", "WEB-INF/test.txt", "WEB-INF/classes/test.properties", "WEB-INF/classes/org/MyClass.class", "WEB-INF/lib/log4j-1.2.14.jar", "WEB-INF/lib/maven-model-2.0.6.jar", "WEB-INF/lib/plexus-utils-1.4.1.jar", }; for ( String entry : expected ) { System.out.println( "Checking for existence of WAR file entry: " + entry ); if ( war.getEntry( entry ) == null ) { System.err.println( "FAILED!" ); return false; } System.out.println( "Checking for uniqueness of WAR file entry: " + entry ); int count = 0; for ( Enumeration en = war.entries(); en.hasMoreElements(); ) { JarEntry je = (JarEntry) en.nextElement(); if ( entry.equals( je.getName() ) ) { count++; } } if ( count != 1 ) { System.err.println( "FAILED! " + count ); return false; } } String[] unexpected = { "org/MyClass.class", }; for ( String entry : unexpected ) { System.out.println( "Checking for absence of WAR file entry: " + entry ); if ( war.getEntry( entry ) != null ) { System.err.println( "FAILED!" ); return false; } } war.close(); } catch( Throwable t ) { t.printStackTrace(); return false; } return true;