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

use*_*607 7 osgi intellij-idea maven 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很方便,但错误呢?真?具体来说,我指的是"包依赖关系不会导出包",显示在导入和注释上.

小智 17

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

为此,请进入项目设置(在Mac上:Command+ ,),然后导航到以下节点:

Inspections --> OSGI --> Package accessibility
Run Code Online (Sandbox Code Playgroud)

选择后,您将能够将严重性级别从错误更改为警告.

在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>
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助,Ajay