renjin Java 응용 프로그램에 포함시키려는 일부 로컬 R 라이브러리가 있습니다. 일부 라이브러리는 완전히 R로 작성되고 일부 라이브러리에는 C++ 종속성이 있고 일부 라이브러리에는 S4 클래스가 있습니다. 이상적으로는 각 라이브러리를 2 부씩 유지하고 싶지 않습니다.Renjin 용 R 라이브러리 자동 포팅
로컬 R 라이브러리 (또는 소스)를 가져 와서 Renjin 호환 버전을 생성하는 자동화 된 방법이 있다면 궁금합니다.
renjin Java 응용 프로그램에 포함시키려는 일부 로컬 R 라이브러리가 있습니다. 일부 라이브러리는 완전히 R로 작성되고 일부 라이브러리에는 C++ 종속성이 있고 일부 라이브러리에는 S4 클래스가 있습니다. 이상적으로는 각 라이브러리를 2 부씩 유지하고 싶지 않습니다.Renjin 용 R 라이브러리 자동 포팅
로컬 R 라이브러리 (또는 소스)를 가져 와서 Renjin 호환 버전을 생성하는 자동화 된 방법이 있다면 궁금합니다.
packages.renjin.org에 나열된 모든 CRAN 및 Bioconductor 패키지는 Java 바이트 코드 (C, C++ 및 Fortran 소스 포함)로 컴파일되고 완전히 자동화 된 빌드 시스템에 의해 원래 소스에서 JAR로 패키징됩니다.
Renjin 문서는 패키지 Renjin에 대한를 만드는 instructions이 포함되어 있지만 R 코드 패키지에 대한 GNU R에 대한 패키지의 차이는 단지 제안 (및 옵션) 디렉토리 레이아웃입니다.
디렉토리 구조에 대한 GNU R의 규칙을 따르는 자신의 R 패키지를 빌드하려면 R 소스 파일의 위치 정보가 포함 된 Maven POM 파일 만 추가해야합니다. 당신이 패키지와 JAR 파일을 생성 mvn package
을의 루트에이 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>
: 예를 들어 (패키지 이름과 버전에 대한 참고 자리).
더 많은 자동화가 필요한 경우 일종의 빌드 시스템을 사용하여 직접해야합니다. 패키지에 필요한 경우 POM에 종속성을 추가하는 것을 잊지 마십시오 (팁 : packages.renjin.org의 POM 코드 조각을 복사하십시오).
renjin의 메인 페이지에는 저장소에 대한 링크가 있습니다. http://packages.renjin.org/ –
실망스럽게 생각 합니다만,이 작업을 쉽게 수행 할 수 있다면 _automagically_ renjin 팀은 몇 년 전에 완료했을 것입니다 . Java/C/C++ 교차로에는 여기에 숨겨진 몇 가지 장애물이 있습니다. 최선의 방법은 renjin 사람들과 이야기하는 것입니다. 행운을 빕니다. –
우리는 자동적으로 그것을했다 Dirk! ;-) CRAN의 대부분의 프로젝트는 수정없이 Renjin을 위해 자동으로 빌드됩니다. – akbertram