我对 WSO2 ESB 有另一个问题。我创建了一些 Maven 项目。该项目包含在 WSO2 的 Java 库项目中。在库项目中,我在 pom.xml 中设置了 maven-bundle-plugin。它通过 Maven 构建正确创建了 MANIFEST,但将项目导出为可部署存档创建了带有旧属性的 MANIFEST.md(我认为,在通过 Eclipse 创建新项目后,带有属性的 MANIFEST(未更改的 SymbolicName,没有导入)。Maven 项目,带有用于捆绑 POM.xml 的类<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.coig.esb.osgi</groupId> <artifactId>emf</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>emf</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api --> <dependency> <groupId>javax.persistence</groupId> <artifactId>javax.persistence-api</artifactId> <version>2.2</version> </dependency> </dependencies></project>然后将上面项目中的 jar 文件从 WSO2 导入到 Java 库项目中。Java 库项目 POM.xml<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>com.coig.esb.osgi.emf.EMFService</groupId> <artifactId>EMFService</artifactId> <version>1.0.0</version> <packaging>bundle</packaging> <name>EMFService</name> <description>EMFService</description> <properties> <CApp.type>lib/library/bundle</CApp.type>当我创建了 Mediator 项目时,设置 maven-bunlde-plugin 来导入我之前提到的模块,也有同样的情况。Maven 构建会创建正确的 MANIFEST.md,但将项目导出为可部署存档会创建 MANIFEST.md,但属性未更改。你能不能给我一些评论,它应该如何设置?
1 回答
慕标琳琳
TA贡献1830条经验 获得超9个赞
看起来“将项目导出为可部署存档”不支持 MANIFEST.MF 中的 Import-Package 标头。此文件由MediatorExportHandler类构建,该类忽略此标头。
IJavaProject javaProject = JavaCore.create(project);
List<String> exportPac =getExportPackages(javaProject);
BundleManifest manifest = new BundleManifest();
manifest.setBundleName(project.getName());
manifest.setBundleSymbolicName(project.getName());
manifest.setBundleDescription(project.getName());
manifest.setBundleVersion("2.0");
manifest.setExportPackagesList(exportPac);
[...]
File manifestFile=new File(metainfPath,"MANIFEST.MF");
FileUtils.createFile(manifestFile, manifest.toString());
添加回答
举报
0/150
提交
取消