1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.felix.bundleplugin;
20
21
22 import org.apache.maven.archiver.MavenArchiveConfiguration;
23 import org.apache.maven.project.MavenProject;
24 import org.codehaus.plexus.component.configurator.converters.composite.ObjectWithFieldsConverter;
25 import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
26 import org.codehaus.plexus.component.configurator.converters.lookup.DefaultConverterLookup;
27 import org.codehaus.plexus.component.configurator.expression.DefaultExpressionEvaluator;
28 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
29 import org.codehaus.plexus.configuration.PlexusConfiguration;
30 import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
31 import org.codehaus.plexus.util.xml.Xpp3Dom;
32
33
34
35
36
37
38
39 public final class JarPluginConfiguration
40 {
41 public static MavenArchiveConfiguration getArchiveConfiguration( MavenProject project )
42 {
43 MavenArchiveConfiguration archiveConfig = new MavenArchiveConfiguration();
44
45 try
46 {
47 ObjectWithFieldsConverter converter = new ObjectWithFieldsConverter();
48 ClassLoader loader = JarPluginConfiguration.class.getClassLoader();
49 ExpressionEvaluator evaluator = new DefaultExpressionEvaluator();
50 ConverterLookup converters = new DefaultConverterLookup();
51
52 PlexusConfiguration settings = null;
53
54 try
55 {
56
57 settings = getPluginConfiguration( project, "org.apache.felix", "maven-bundle-plugin" );
58 settings = settings.getChild( "archive" );
59 }
60 catch ( Exception e )
61 {
62 }
63
64
65 if ( null == settings || settings.getChildCount() == 0 )
66 {
67 settings = getCorePluginConfiguration( project, "jar" );
68 settings = settings.getChild( "archive" );
69 }
70
71 converter.processConfiguration( converters, archiveConfig, loader, settings, evaluator, null );
72 }
73 catch ( Exception e )
74 {
75
76 }
77
78 return archiveConfig;
79 }
80
81
82 private static PlexusConfiguration getCorePluginConfiguration( MavenProject project, String pluginName )
83 {
84 return getPluginConfiguration( project, "org.apache.maven.plugins", "maven-" + pluginName + "-plugin" );
85 }
86
87
88 private static PlexusConfiguration getPluginConfiguration( MavenProject project, String groupId, String artifactId )
89 {
90 Xpp3Dom pluginConfig = project.getGoalConfiguration( groupId, artifactId, null, null );
91
92 return new XmlPlexusConfiguration( pluginConfig );
93 }
94 }