2016-09-05 9 views
0

私は、私のrenjin Javaアプリケーションに含まれているいくつかのローカルRライブラリを持っています。いくつかのライブラリは完全にRで書かれており、いくつかのライブラリにはC++の依存関係があり、いくつかのライブラリにはS4のクラスがあります。理想的には、私は各ライブラリの2つのコピーを維持したくありません。RenjinのRライブラリの自動移植

ローカルのRライブラリ(またはそのソース)を使用してRenjin互換バージョンを生成する自動化された方法があるのですか?

+0

renjinのメインページにリポジトリへのリンクがあります:http://packages.renjin.org/ –

+0

残念ですが、これを自明に行うことが簡単であれば、レンジンチームは数年前。 Java/C/C++の交差点にはここに隠されたいくつかの深刻なハードルがあります。最善の策は、renjinの人々と話すことです。がんばろう。 –

+2

私たちはそれを自動的にDirk! ;-) CRAN上のほとんどのプロジェクトは、Renjinに対して変更なしで自動的にビルドされるようになりました。 – akbertram

答えて

2

packages.renjin.orgにリストされているすべてのCRANおよびBioconductorパッケージは、Javaバイトコード(C、C++およびFortranソースを含む)にコンパイルされ、完全自動化ビルドシステムによって元のソースからJARにパッケージされます。

Renjinドキュメントは、パッケージRenjinための作成に関するinstructionsを含むが、唯一のRコードとパッケージのGNU Rのパッケージとの違いは、提案(従って任意)ディレクトリレイアウトです。

GNU Rのディレクトリ構造に準拠した独自のRパッケージをビルドするには、Rソースファイルの場所に関する情報を含むMaven POMファイルのみを追加する必要があります。例えば、(パッケージ名とバージョンのためのノートプレースホルダ):

<?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>org.renjin.cran</groupId> 
    <artifactId>YOUR PACKAGE NAME HERE</artifactId> 
    <version>YOUR PACKAGE VERSION HERE</version> 
    <distributionManagement> 
    <repository> 
     <id>renjin-packages</id> 
     <name>Renjin CI Repository</name> 
     <url>http://nexus.bedatadriven.com/content/repositories/renjin-packages</url> 
    </repository> 
    </distributionManagement> 
    <dependencies> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>methods</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>datasets</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>stats</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>grDevices</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>stats4</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>tools</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>utils</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>graphics</artifactId> 
     <version>0.8.2201</version> 
    </dependency> 
    <dependency> 
     <groupId>org.renjin</groupId> 
     <artifactId>compiler</artifactId> 
     <version>0.8.2201</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
    <repositories> 
    <repository> 
     <id>bedatadriven-public</id> 
     <url>http://nexus.bedatadriven.com/content/groups/public/</url> 
    </repository> 
    </repositories> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>bedatadriven-public</id> 
     <url>http://nexus.bedatadriven.com/content/groups/public/</url> 
    </pluginRepository> 
    </pluginRepositories> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.renjin</groupId> 
     <artifactId>renjin-maven-plugin</artifactId> 
     <version>0.8.2201</version> 
     <executions> 
      <execution> 
      <id>renjin-compile</id> 
      <phase>process-classes</phase> 
      <goals> 
       <goal>namespace-compile</goal> 
      </goals> 
      <configuration> 
       <sourceDirectory>${basedir}/R</sourceDirectory> 
       <dataDirectory>${basedir}/data</dataDirectory> 
       <defaultPackages> 
       <package>methods</package> 
       <package>stats</package> 
       <package>utils</package> 
       <package>grDevices</package> 
       <package>graphics</package> 
       <package>datasets</package> 
       </defaultPackages> 
      </configuration> 
      </execution> 
      <execution> 
      <id>renjin-test</id> 
      <phase>test</phase> 
      <goals> 
       <goal>test</goal> 
      </goals> 
      <configuration> 
       <timeoutInSeconds>30</timeoutInSeconds> 
       <testSourceDirectory>${basedir}/tests</testSourceDirectory> 
       <defaultPackages> 
       <package>methods</package> 
       <package>stats</package> 
       <package>utils</package> 
       <package>grDevices</package> 
       <package>graphics</package> 
       <package>datasets</package> 
       </defaultPackages> 
      </configuration> 
      </execution> 
      <execution> 
      <id>gnur-compile</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>make-gnur-sources</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

はあなたのルートJARファイルを作成するmvn packageをパッケージ化して行うこのPOMファイルを置きます。

さらに自動化が必要な場合は、何らかの種類のビルドシステムを使用して自分で行う必要があります。パッケージに必要な場合は、POMに依存関係を追加することを忘れないでください(ヒント:POMスニペットをpackages.renjin.orgからコピーしてください)。

関連する問題