当Maven处理时,如何在IntelliJ中配置OSGI

时间:2014-01-30 18:56:34

标签: maven intellij-idea osgi sling

我是OSGI新手。

我可以使用关于IntelliJ IDEA / OSGI / Maven / Sling的任何指导。

所以当我加载它时,实际的Felix插件会死掉。显然它没有被维护,并且不再与我所说的IntelliJ IDEA 13的最新版本兼容。

所以我已经将框架配置为felix-framework-4.2.1,这似乎工作正常。我最关心的是,如果我将OSGI方面应用于一个包,设置似乎表明它将改变包。既然我们在Maven中设置了这个,我认为我们不想要这个。 facet的来源似乎是Osmorc插件。当我之前使用它时,有人抱怨maven中的一些软件包没有启用OSGI,IDE想要指向一个特殊的Spring存储库,用于启用OSGI的jar依赖项。

由于我们在Maven中这样做,我是否应该打扰Osmorc?有没有更好的方法来管理IntelliJ IDEA中的OSGI?知道哪些软件包启用OSGI很方便,但错误呢?真?具体来说,我指的是“包依赖关系不会导出包”,显示在导入和注释上。

2 个答案:

答案 0 :(得分:15)

我个人对 Intellij IDEA 13 的观察是,在分析使用非osgi导出类的类时,OSGI项目检查员会稍微积极一些。话虽这么说,解决这个问题的方法是调整检查员的严重程度。这使您可以使用在Intellij IDEA 12中使用的基于OSGI的相同方法。

要执行此操作,请进入项目设置(在Mac上:命令 + ),然后导航到以下节点:

Inspections --> OSGI --> Package accessibility

选择后,您就可以将严重性级别从错误更改为警告。

对pom.xml中的一些更改执行此更改是必需的:

<dependencies>
.
.
    <dependency>
      <groupId>com.pkg.name</groupId>
      <artifactId>some-non-osgi-artifact</artifactId>
      <version>0.1-EXAMPLE</version>
   </dependency>
</dependencies>

<build>
    <plugins>
    .
    .
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>${maven-bundle-plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Bundle-Version>${project.version}</Bundle-Version>
                    <Export-Package>
                        you.know.what.goes.here
                    </Export-Package>
                    <Private-Package>you.know.what.goes.here</Private-Package>
                    <Import-Package>
                        *
                    </Import-Package>
                    <Embed-Dependency>some-non-osgi-artifact;scope=compile|runtime;inline=false</Embed-Dependency>
                    <Embed-Transitive>true</Embed-Transitive>
                    <Embed-StripGroup>true</Embed-StripGroup>
                </instructions>
            </configuration>
        </plugin>
    </plugins>
</build>

希望这有帮助, 阿贾伊

答案 1 :(得分:1)

我认为您目前最好的选择是使用maven捆绑插件来管理您的导入和导出。这意味着intellij只会将您的捆绑包视为maven项目。仍然应该得到正确的罐子。我在eclipse中以相同的方式处理OSGi包,它工作正常。

我还在OSGi开发邮件列表上看到有一个用于intellij计划的bndtools,但这肯定需要一段时间。