我對 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
提交
取消
