public void execute() throws MojoExecutionException {
if (project.getPackaging().equals("pom")) {
return;
}
Log log = getLog();
List<File> jarFiles = new ArrayList<File>();
for (Object o : project.getArtifacts()) {
Artifact a = (Artifact)o;
if (!(Artifact.SCOPE_COMPILE.equals(a.getScope()) || Artifact.SCOPE_RUNTIME.equals(a.getScope()))) {
if (log.isDebugEnabled()) {
log.debug("Skipping artifact: " + a);
}
continue;
}
if (log.isDebugEnabled()) {
log.debug("Artifact: " + a);
}
String bundleName = null;
try {
bundleName = LibraryBundleUtil.getBundleName(a.getFile());
} catch (IOException e) {
throw new MojoExecutionException(e.getMessage(), e);
}
if (bundleName == null) {
if (log.isDebugEnabled()) {
log.debug("Adding non-OSGi jar: " + a);
}
jarFiles.add(a.getFile());
}
}
try {
String version = project.getVersion();
if (version.endsWith(Artifact.SNAPSHOT_VERSION)) {
version = version.substring(0, version.length() - Artifact.SNAPSHOT_VERSION.length() - 1);
}
Manifest mf = LibraryBundleUtil.libraryManifest(jarFiles, project.getName(), version, copyJars);
File file = new File(project.getBasedir(), "META-INF");
file.mkdir();
file= new File(file, "MANIFEST.MF");
if (log.isDebugEnabled()) {
log.debug("Generating " + file);
}
FileOutputStream fos = new FileOutputStream(file);
mf.write(fos);
fos.close();
if (copyJars) {
File lib = new File(project.getBasedir(), "lib");
if (lib.isDirectory()) {
for (File c : lib.listFiles()) {
c.delete();
}
}
lib.mkdir();
byte[] buf = new byte[4096];
for (File jar : jarFiles) {
File jarFile = new File(lib, jar.getName());
if (log.isDebugEnabled()) {
log.debug("Copying " + jar + " to " + jarFile);
}
FileInputStream in = new FileInputStream(jar);
FileOutputStream out = new FileOutputStream(jarFile);
int len = 0;
while (len > 0) {