0

私は Maven の初心者で、複数のサードパーティ ライブラリを使用して .java から .jar ファイルを作成したいと考えています。プロジェクトで使用する 32 以上のライブラリがあり、CQ5 OSGi で使用できるようにプロジェクトをコンパイルする必要があります。私は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>info.hartmann.dfs</groupId>
  <artifactId>dfs-connection-handler</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>DFS connection handler</name>
  <build>
    <sourceDirectory>C:\Users\302104\workspace\DFS\src</sourceDirectory>
    <resources>
      <resource>
        <directory>C:\Users\302104\workspace\lib</directory>
      </resource>
    </resources>
    <directory>C:\Users\302104\workspace\DFS\target</directory>
    <finalName>dfs-connection-handler-0.0.1-SNAPSHOT</finalName>
    <plugins>
  <plugin>
    <groupId>org.apache.sling</groupId>
    <artifactId>maven-sling-plugin</artifactId>
    <executions>
        <execution>
            <id>install-bundle</id>
            <goals>
                <goal>install</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <slingUrl>http://localhost:4502/system/console</slingUrl>
        <user>user</user>
        <password>password</password>
    </configuration>
</plugin>
  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.1.0</version>
    <extensions>true</extensions>
    <executions>
        <execution>
            <id>wrap-my-dependency</id>
            <goals>
                <goal>wrap</goal>
            </goals>
            <configuration>
                <wrapImportPackage>;</wrapImportPackage>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <instructions>
            <export-package>info.hartmann.dfs</export-package>
            <import-package>
                java.util.List;resolution=optional,
                com.emc.documentum.fs.datamodel.core.*;resolution=optional,
                com.emc.documentum.fs.datamodel.core.content.*;resolution=optional,
                com.emc.documentum.fs.datamodel.core.profiles.*;resolution=optional,
                com.emc.documentum.fs.datamodel.core.query.*;resolution=optional,
                com.emc.documentum.fs.rt.context.*;resolution=optional,
                com.emc.documentum.fs.services.core.client.*;resolution=optional,
                *
            </import-package>
        </instructions>
    </configuration>
  </plugin>
</plugins>
  </build>

</project>

この pom.xml で何をしているのかほとんどわからないので、何か助けていただければ幸いです。

ところで、次のようなマークを使用してその.javaファイルをコンパイルするにはどうすればよいですか

@Service(DfsHandler.class)
@Component(label = "DFS Connection Handler", immediate = true, metatype = true)

助けてくれてありがとう

4

1 に答える 1

4

dev.day.comサイトのMaven による開発ページから始めるのがよいでしょう。これには、開始するための多くの情報が含まれています。

32 個のライブラリが Maven リポジトリにある場合は、POM の依存関係エントリを介してそれらを参照する必要があります。依存関係が Maven にない場合は、次のように依存関係エントリで systemPath を使用してそれらを参照できます。

<dependency>
    <groupId>org.swinglabs</groupId>
    <artifactId>swingx</artifactId>
    <version>0.9.2</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/swingx-0.9.3.jar</systemPath>
</dependency>

または、この記事では、maven を使用してこれらのライブラリをローカル リポジトリに追加する方法について説明します。

可能であれば、多くのパスを構成する必要がないように、 maven の標準ディレクトリ レイアウトに従ってプロジェクトをレイアウトすることをお勧めします。少なくとも、マシンに固有ではなく、プロジェクトに関連するパスを構成してください。たとえば、 を使用する代わりに、 をC:\Users\302104\workspace\DFS\src使用しますsrc

Apache Felix SCR mavenプラグインを使用して、@Service および @Component アノテーションを処理できます。:

  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-scr-plugin</artifactId>
    <version>1.9.0</version>
    <executions>
      <execution>
        <id>generate-scr-scrdescriptor</id>
        <goals>
          <goal>scr</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

このプラグインは、サービスを Felix OSGi ランタイムに登録するバンドルに追加されるメタデータを生成します。

プロジェクトには SCR アノテーションの依存関係も必要です。

<dependency>
  <!-- scr annotations - for generating component descriptors only -->
  <groupId>org.apache.felix</groupId>
  <artifactId>org.apache.felix.scr.annotations</artifactId>
  <version>1.6.0</version>
  <scope>provided</scope>
</dependency>

SCR に関するこのプレゼンテーションは、SCRの使用法を紹介するのに適しています。また、この github repoには簡単な作業例があります。

于 2013-07-01T12:13:00.390 に答える