diff --git a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
index 37b8658..a9a742f 100644
--- a/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
+++ b/bundleplugin/src/main/java/org/apache/felix/bundleplugin/BundlePlugin.java
@@ -205,13 +205,13 @@
     public void execute() throws MojoExecutionException
     {
         Properties properties = new Properties();
+        String projectType = getProject().getArtifact().getType();
 
-        // ignore project types not supported, useful when the plugin is configured in the parent pom
-        if ( !supportedProjectTypes.contains( getProject().getArtifact().getType() ) )
+        // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+        if ( !supportedProjectTypes.contains( projectType ) )
         {
-            getLog().debug(
-                "Ignoring project " + getProject().getArtifact() + " : type " + getProject().getArtifact().getType()
-                    + " is not supported by bundle plugin, supported types are " + supportedProjectTypes );
+            getLog().warn( "Ignoring project type " + projectType +
+                           " - supportedProjectTypes = " + supportedProjectTypes );
             return;
         }
 
diff --git a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeploy.java b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeploy.java
index 2c6f295..acfbbbc 100644
--- a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeploy.java
+++ b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeploy.java
@@ -143,9 +143,13 @@
 
     public void execute() throws MojoExecutionException
     {
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
+        String projectType = project.getPackaging();
+
+        // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+        if ( !supportedProjectTypes.contains( projectType ) )
         {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
+            getLog().warn( "Ignoring project type " + projectType +
+                           " - supportedProjectTypes = " + supportedProjectTypes );
             return;
         }
         else if ( "NONE".equalsIgnoreCase( remoteOBR ) || "false".equalsIgnoreCase( remoteOBR ) )
diff --git a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeployFile.java b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeployFile.java
index da4e7eb..8af1114 100644
--- a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeployFile.java
+++ b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrDeployFile.java
@@ -124,10 +124,13 @@
     public void execute() throws MojoExecutionException
     {
         MavenProject project = getProject();
+        String projectType = project.getPackaging();
 
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
+        // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+        if ( !supportedProjectTypes.contains( projectType ) )
         {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
+            getLog().warn( "Ignoring project type " + projectType +
+                           " - supportedProjectTypes = " + supportedProjectTypes );
             return;
         }
         else if ( "NONE".equalsIgnoreCase( remoteOBR ) || "false".equalsIgnoreCase( remoteOBR ) )
diff --git a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstall.java b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstall.java
index 9f313a1..7d2dd11 100644
--- a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstall.java
+++ b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstall.java
@@ -95,9 +95,13 @@
 
     public void execute()
     {
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
+        String projectType = project.getPackaging();
+
+        // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+        if ( !supportedProjectTypes.contains( projectType ) )
         {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
+            getLog().warn( "Ignoring project type " + projectType +
+                           " - supportedProjectTypes = " + supportedProjectTypes );
             return;
         }
         else if ( "NONE".equalsIgnoreCase( obrRepository ) || "false".equalsIgnoreCase( obrRepository ) )
diff --git a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstallFile.java b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstallFile.java
index f880ca7..02e167c 100644
--- a/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstallFile.java
+++ b/bundleplugin/src/main/java/org/apache/felix/obrplugin/ObrInstallFile.java
@@ -68,10 +68,13 @@
     public void execute() throws MojoExecutionException
     {
         MavenProject project = getProject();
+        String projectType = project.getPackaging();
 
-        if ( !supportedProjectTypes.contains( project.getPackaging() ) )
+        // ignore unsupported project types, useful when bundleplugin is configured in parent pom
+        if ( !supportedProjectTypes.contains( projectType ) )
         {
-            getLog().info( "Ignoring packaging type " + project.getPackaging() );
+            getLog().warn( "Ignoring project type " + projectType +
+                           " - supportedProjectTypes = " + supportedProjectTypes );
             return;
         }
         else if ( "NONE".equalsIgnoreCase( obrRepository ) || "false".equalsIgnoreCase( obrRepository ) )
