Java WSO2和创建可部署归档从Maven获取旧属性

Java WSO2和创建可部署归档从Maven获取旧属性,java,maven,wso2,osgi,maven-bundle-plugin,Java,Maven,Wso2,Osgi,Maven Bundle Plugin,我还有一个WSO2 ESB问题。我创建了一些Maven项目。该项目包含在WSO2的Java库项目中。在库项目中,我在pom.xml中设置了maven bundle插件集。它通过Maven build正确地创建了清单,但将项目导出为可部署归档文件会使用旧属性创建MANIFEST.md(我认为,在通过Eclipse创建新项目后,使用属性创建清单(未更改的符号名称,没有导入) Maven项目与绑定POM.xml的类 <project xmlns="http://maven.apache.org/

我还有一个WSO2 ESB问题。我创建了一些Maven项目。该项目包含在WSO2的Java库项目中。在库项目中,我在pom.xml中设置了maven bundle插件集。它通过Maven build正确地创建了清单,但将项目导出为可部署归档文件会使用旧属性创建MANIFEST.md(我认为,在通过Eclipse创建新项目后,使用属性创建清单(未更改的符号名称,没有导入)

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>
Maven构建中的MANIFEST.md

Manifest-Version: 1.0
Bundle-Description: EMFService
Bundle-SymbolicName: com.coig.osgi.emf.providerservice
Built-By: author
Bundle-ManifestVersion: 2
Bnd-LastModified: 1532429067922
Embed-Dependency: emf
Import-Package: javax.persistence;version="[2.2,3)"
DynamicImport-Package: *
Tool: Bnd-1.15.0
Export-Package: com.coig.esb.osgi.emf;uses:="javax.persistence",com.co
 ig.esb.osgi.emf
Bundle-Version: 1.0.0
Bundle-Name: EMFService
Bundle-ClassPath: .,emf-1.0.0.jar
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.8.0_172
当我创建Mediator项目时,将maven bunlde plugin设置为导入我前面提到的模块,也会出现同样的情况。maven build创建正确的MANIFEST.md,但将项目导出为可部署归档创建属性不变的MANIFEST.md

您能给我一些说明,它应该如何设置吗?

看起来“将项目导出为可部署存档”不支持MANIFEST.MF中的导入包头。此文件是由忽略此头的类生成的

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());    
IJavaProject-javaProject=JavaCore.create(项目);
列出exportPac=getExportPackages(javaProject);
BundleManifest清单=新BundleManifest();
setBundleName(project.getName());
manifest.setBundleSymbolicName(project.getName());
manifest.setBundleDescription(project.getName());
清单。挫折杠杆(“2.0”);
manifest.setExportPackagesList(exportPac);
[...]
File manifestFile=新文件(metainfPath,“MANIFEST.MF”);
FileUtils.createFile(manifestFile,manifest.toString());

如果没有完整的pom文件,或者更好的是完整的项目,那么很难看一看。其他一切都是推测性的。@khmarbaise我在第一篇文章中添加了来自Maven项目和Java库项目的完整pom文件
Manifest-Version: 1.0
Bundle-Description: EMFService
Bundle-SymbolicName: com.coig.osgi.emf.providerservice
Built-By: author
Bundle-ManifestVersion: 2
Bnd-LastModified: 1532429067922
Embed-Dependency: emf
Import-Package: javax.persistence;version="[2.2,3)"
DynamicImport-Package: *
Tool: Bnd-1.15.0
Export-Package: com.coig.esb.osgi.emf;uses:="javax.persistence",com.co
 ig.esb.osgi.emf
Bundle-Version: 1.0.0
Bundle-Name: EMFService
Bundle-ClassPath: .,emf-1.0.0.jar
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.8.0_172
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());