Hi -

I am new to writing Maven plug-ins.

I am fiddling with a plug-in, where I do have to make use of Spring Beans (therefore I have to initialize Spring in a programmatic fashion). I am invoking this plug-in from another project's pom. My problem is, in my plug-in, I could not so far manage to have Spring find its 'applicationcontext.xml' file ( I am using the ClassPathXmlApplicationContext constructor,and the plug-is is complaining that it is not able to find the applicationcontext file on the classpath.

So, is there a way I can override the the classpath of the thread that starts my plugin??

To make things more understandable, here is a chunk from my project pom (where I call my plug-in)

...........
<executions>
        <execution>
                <phase>generate-sources</phase>
                        <goals>
                                <goal>
                                        CreateTemplateWebProject
                                </goal>
                        </goals>
        </execution>
</executions>
<configuration>
        <deploymentDirectory>
                /Users/ilkerkarakas/temp
        </deploymentDirectory>
</configuration>
.............

And here is an excerpt from my plug-in:

............
        public void execute() throws MojoExecutionException {
                File f = deploymentDirectory;
                FileWriter w = null;

                if (getLog().isInfoEnabled()) {
                        getLog().info(
                                        "Starting the build, deploymentDirectory is: 
["
                                                        + 
deploymentDirectory.getAbsolutePath() + "]");
                }

                try {
                        if (f.exists() && !PluginUtils.deleteDirectory(f)) {
                                throw new MojoExecutionException(
                                                "Could not empty target 
directory");
                        } else {
                                f.mkdirs();
                        }
                        String[] directoryTree = new String[] { "src/main/java",
                                        "src/main/resources", "src/test/java",
                                        "src/test/resources", "WebContent" };
                        for (String dir : directoryTree) {
                                new File(f, dir).mkdirs();
                        }
                        if (getLog().isInfoEnabled()) {
                                getLog().info("Initializing Spring...");
                        }

                        // Start-up the Spring App. Context  (It blows here...)
                        appContext = new ClassPathXmlApplicationContext(
                                        new String[] { "ApplicationContext.xml" 
});

...............

And here is the error:

INFO] Scanning for projects...
[INFO] ----------------------------------------------------------------------------
[INFO] Building Web (Maven) Testing
[INFO]    task-segment: [generate-sources]
[INFO] ----------------------------------------------------------------------------
[INFO] ictweb: CreateTemplateWebProject
[INFO] Starting the build, deploymentDirectory is: [/Users/ ilkerkarakas/temp/]
[INFO] Initializing Sring...
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
[ERROR] IOException parsing XML document from class path resource [ApplicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [ApplicationContext.xml] cannot be opened because it does not exist
[INFO] Finished the build...
org.apache.maven.plugin.MojoExecutionException: Error
        at web.JSFProjectCreationMojo.execute(JSFProjectCreationMojo.java:82)
at org .apache .maven .plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:578) at org .apache .maven .lifecycle .DefaultLifecycleExecutor .executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:508) at org .apache .maven .lifecycle .DefaultLifecycleExecutor .executeTaskSegments(DefaultLifecycleExecutor.java:328) at org .apache .maven .lifecycle .DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:151)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:220)
at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java: 813) at org.maven.ide.eclipse.embedder.Maven2Executor.main(Maven2Executor.java: 85)

-----------

Thanks
-ilker


Reply via email to