Author: gnodet
Date: Mon Oct  2 02:33:34 2006
New Revision: 451930

URL: http://svn.apache.org/viewvc?view=rev&rev=451930
Log:
SM-605: Ability to configure jbi:projectDeploy goal to exclude updating 
dependencies

Modified:
    
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiProjectDeployerMojo.java

Modified: 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiProjectDeployerMojo.java
URL: 
http://svn.apache.org/viewvc/incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiProjectDeployerMojo.java?view=diff&rev=451930&r1=451929&r2=451930
==============================================================================
--- 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiProjectDeployerMojo.java
 (original)
+++ 
incubator/servicemix/trunk/tooling/jbi-maven-plugin/src/main/java/org/apache/servicemix/maven/plugin/jbi/JbiProjectDeployerMojo.java
 Mon Oct  2 02:33:34 2006
@@ -67,21 +67,31 @@
        private List deploymentTypes;
 
        /**
-        * @parameter default-value="true"
+        * @parameter default-value="true" expression="${deployDependencies}"
         */
        private boolean deployDependencies;
+    
+    /**
+     * @parameter default-value="false" expression="${forceUpdate}"
+     */
+    private boolean forceUpdate;
 
        /**
-        * @parameter default-value="false"
+        * @parameter default-value="true" expression="${deferExceptions}"
         */
        private boolean deferExceptions;
+    
+    /**
+     * @parameter default-value="true" expression="${deployChildren}"
+     */
+    private boolean deployChildren;
 
        public void execute() throws MojoExecutionException, 
MojoFailureException {
                deployProject();
        }
 
        protected void deployProject() throws MojoExecutionException {
-               if 
(!getDeployablePackagingTypes().contains(project.getPackaging())) {
+               if (!deployChildren && 
!getDeployablePackagingTypes().contains(project.getPackaging())) {
                        throw new MojoExecutionException(
                                        "Project must be of packaging type ["
                                                        + 
getDeployablePackagingTypes() + "]");
@@ -89,41 +99,36 @@
 
                try {
                        Stack dependencies = new Stack();
-                       dependencies.add(resolveDeploymentPackage(project, 
project
-                                       .getArtifact()));
-                       ArrayList artifactList = new ArrayList();
-                       artifactList.addAll(project.getArtifacts());
-                       Collections.sort(artifactList, new 
ArtifactDepthComparator());
-                       for (Iterator iter = artifactList.iterator(); 
iter.hasNext();) {
-                               Artifact artifact = (Artifact) iter.next();
-                               resolveArtifact(artifact, dependencies);
-                       }
+            if (deployChildren) {
+                resolveArtifact(project.getArtifact(), dependencies);
+            } else {
+                       dependencies.add(resolveDeploymentPackage(project, 
project.getArtifact()));
+                       ArrayList artifactList = new ArrayList();
+                       artifactList.addAll(project.getArtifacts());
+                       Collections.sort(artifactList, new 
ArtifactDepthComparator());
+                       for (Iterator iter = artifactList.iterator(); 
iter.hasNext();) {
+                               Artifact artifact = (Artifact) iter.next();
+                               resolveArtifact(artifact, dependencies);
+                       }
+            }
 
-                       getLog()
-                                       .info(
-                                                       "------------------ 
Deployment Analysis --------------------");
-                       getLog().info(
-                                       project.getName() + " has " + 
(dependencies.size() - 1)
+                       getLog().info("------------------ Deployment Analysis 
--------------------");
+                       getLog().info(project.getName() + " has " + 
(dependencies.size() - 1)
                                                        + " child 
dependencies");
 
-                       for (Iterator iterator = dependencies.iterator(); 
iterator
-                                       .hasNext();) {
+                       for (Iterator iterator = dependencies.iterator(); 
iterator.hasNext();) {
                                getLog().info(" - " + iterator.next());
                        }
 
-                       getLog()
-                                       .info(
-                                                       
"-----------------------------------------------------------");
+                       
getLog().info("-----------------------------------------------------------");
 
                        if (deployDependencies) {
                                // We need to stop all the dependencies first
                                if (!deferExceptions) {
-                                       for (Iterator iterator = 
dependencies.iterator(); iterator
-                                                       .hasNext();) {
-                                               JbiDeployableArtifact 
jbiDeployable = (JbiDeployableArtifact) iterator
-                                                               .next();
+                                       for (Iterator iterator = 
dependencies.iterator(); iterator.hasNext();) {
+                                               JbiDeployableArtifact 
jbiDeployable = (JbiDeployableArtifact) iterator.next();
 
-                                               if (isDeployed(jbiDeployable)) {
+                                               if (forceUpdate && 
isDeployed(jbiDeployable)) {
                                                        
stopDependency(jbiDeployable);
                                                        
undeployDependency(jbiDeployable);
                                                }
@@ -135,9 +140,12 @@
                                while (!dependencies.empty()) {
                                        JbiDeployableArtifact jbiDeployable = 
(JbiDeployableArtifact) dependencies
                                                        .pop();
-                                       deployDependency(jbiDeployable, 
deferExceptions);
-                                       if (!deferExceptions)
-                                               startDependency(jbiDeployable);
+                    if (forceUpdate || !isDeployed(jbiDeployable)) {
+                                       deployDependency(jbiDeployable, 
deferExceptions);
+                                       if (!deferExceptions) {
+                                               startDependency(jbiDeployable);
+                        }
+                    }
                                }
                        } else {
                                JbiDeployableArtifact jbiDeployable = 
(JbiDeployableArtifact) dependencies
@@ -277,28 +285,29 @@
                        throws ArtifactResolutionException, 
ArtifactNotFoundException {
                MavenProject project = null;
                try {
-                       project = projectBuilder.buildFromRepository(artifact, 
remoteRepos,
-                                       localRepo, true);
+                       project = projectBuilder.buildFromRepository(artifact, 
remoteRepos, localRepo, false);
                } catch (ProjectBuildingException e) {
-                       getLog().warn(
-                                       "Unable to determine packaging for 
dependency : "
+                       getLog().warn("Unable to determine packaging for 
dependency : "
                                                        + 
artifact.getArtifactId() + " assuming jar");
                }
 
                if (project != null) {
                        if 
(getDeployablePackagingTypes().contains(project.getPackaging())) {
-                               getLog().debug(
-                                               "Checking for dependency from 
project "
-                                                               + 
project.getArtifactId());
-                               JbiDeployableArtifact deployableArtifact = 
resolveDeploymentPackage(
-                                               project, artifact);
+                               getLog().debug("Checking for dependency from 
project " + project.getArtifactId());
+                               JbiDeployableArtifact deployableArtifact = 
resolveDeploymentPackage(project, artifact);
                                if (!dependencies.contains(deployableArtifact)) 
{
-                                       getLog().debug(
-                                                       "Adding dependency from 
project "
-                                                                       + 
project.getArtifactId());
+                                       getLog().debug("Adding dependency from 
project " + project.getArtifactId());
                                        dependencies.push(deployableArtifact);
                                }
-                       }
+                ArrayList artifactList = new ArrayList();
+                artifactList.addAll(project.getArtifacts());
+                Collections.sort(artifactList, new ArtifactDepthComparator());
+                for (Iterator iter = artifactList.iterator(); iter.hasNext();) 
{
+                    resolveArtifact((Artifact) iter.next(), dependencies);
+                }
+                       } else {
+                           getLog().debug("Ignoring non-jbi dependency: " + 
project.getArtifactId() + " of type " + project.getPackaging());         
+            }
                }
                return dependencies;
        }


Reply via email to