ejbDeploy is broken (alternate fix)
-----------------------------------

                 Key: MWAS-61
                 URL: http://jira.codehaus.org/browse/MWAS-61
             Project: Maven 2.x WebSphere 6 Plugin
          Issue Type: Bug
    Affects Versions: 1.1.1
         Environment: WAS60
Apache Maven 2.2.1 (r801777; 2009-08-06 22:16:01+0300)
Java version: 1.6.0_17
Default locale: fi_FI, platform encoding: Cp1252
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
            Reporter: Arthur van der Knaap
            Assignee: David J. M. Karlsen


ejbDeploy fails, when it copies the files to the generated classes directory. I 
fixed it for the WAS60 installation on my system. Changed EjbDeployMojo.execute 
to:
        public void execute() throws MojoExecutionException, 
MojoFailureException {
                if (!getMavenProject().getPackaging().equalsIgnoreCase("ejb")) {
                        throw new MojoExecutionException(
                                        "Invalid packaging type, this plugin 
can only be applied to ejb packaging type projects");
                }

                super.execute();

                if (!getOutputJarFile().exists()) // TODO: Solve generically - 
MWAS-14 -
                                                                                
        // why doesn't failOnError fail the
                                                                                
        // build and ws_ant return a
                                                                                
        // returncode != 0?
                {
                        throw new MojoExecutionException("Deployment failed - 
see previous errors");
                }

                File[] workingDirectorySubdirs = 
getWorkingDirectory().listFiles(
                                (java.io.FileFilter) 
DirectoryFileFilter.DIRECTORY);
                if (workingDirectorySubdirs.length != 1) {
                        throw new MojoExecutionException("Cannot find workbench 
root under "
                                        + 
getWorkingDirectory().getAbsolutePath());
                }
                File[] potentialRoots = workingDirectorySubdirs[0]
                                .listFiles((java.io.FileFilter) 
DirectoryFileFilter.DIRECTORY);
                if (potentialRoots.length > 2) {
                        throw new MojoExecutionException("Cannot find workbench 
root under "
                                        + 
getWorkingDirectory().getAbsolutePath());
                }
                File workBenchRoot = null;
                for (int i = 0; i < potentialRoots.length; i++) {
                        workBenchRoot = potentialRoots[i];
                        if (!workBenchRoot.getName().equals(".metadata")) {
                                break;
                        }
                }

                // copy sources
                File generatedSources = new File(workBenchRoot, "ejbModule");
                try {
                          // Create a filter for ".java" files
                          IOFileFilter javaSuffixFilter = 
FileFilterUtils.suffixFileFilter(".java");
                          IOFileFilter javaFiles = 
FileFilterUtils.andFileFilter(FileFileFilter.FILE, javaSuffixFilter);
                          FileFilter filter = 
FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, javaFiles);

                        FileUtils.copyDirectory(generatedSources, 
getGeneratedSourcesDirectory(), filter);
                        FileUtils.deleteDirectory(new 
File(getGeneratedSourcesDirectory(), "META-INF"));
                } catch (IOException e) {
                        throw new MojoExecutionException("Error copying 
generated sources", e);
                }

                List compileSourceRoots = 
getMavenProject().getCompileSourceRoots();
                
compileSourceRoots.add(getGeneratedSourcesDirectory().getPath());

                // copy generated classes
                File generatedClasses = new File(workBenchRoot, "ejbModule");

                try {
                          // Create a filter for ".class" files
                          IOFileFilter classSuffixFilter = 
FileFilterUtils.suffixFileFilter(".class");
                          IOFileFilter classFiles = 
FileFilterUtils.andFileFilter(FileFileFilter.FILE, classSuffixFilter);
                          FileFilter filter = 
FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, classFiles);
                        FileUtils.copyDirectory(generatedClasses, 
getGeneratedClassesDirectory(), filter);
                        Resource resource = new Resource();
                        
resource.setDirectory(getGeneratedClassesDirectory().getPath());
                        getMavenProject().getResources().add(resource);
                } catch (IOException e) {
                        throw new MojoExecutionException("Error copying 
generated classes", e);
                }

                getLog().info("ejbDeploy finished");
        } 

PS: sorry for not knowing how to create patches, I still wanted to share this.



-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to