Dear all, I wrote an open-source Java software, which I release as a stand-alone JAR file. I also wrote an R package, which adds functionality and some wrapper functions for the JAR for use without GUI from R. It uses rJava for this purpose. So far, I released both the JAR and the R package on GitHub and included a function in the R package that would allow the user to download the latest JAR and store it in the package installation directory under java/.
But this causes unreliability for several reasons. GitHub allows only so many downloads per time unit, which occasionally messes up testing and end user experience; users sometimes end up with incompatible versions; it adds an inconvenient step for the user etc. I was thinking it may be more reliable to bundle the two pieces together by including the JAR file in the /inst/java directory of the package sources. This would also allow me to initialize Java with the JAR file upon loading the package without asking the user to download or initialize anything. However, the JAR file depends on other open-source software in the form of JAR files packaged into my JAR file (so my JAR file is a "fat" JAR file). For example, I access SQLite databases as part of my Java program, and for this I need the SQLite JDBC JAR, which has about 7MB. This leads to a note during R CMD check, which, I guess, will prevent CRAN submission: N checking installed package size ... installed size is 9.1Mb sub-directories of 1Mb or more: java 8.1Mb As an alternative solution, I wrote a function that would download the correct version of the JAR file and store it in inst/java. This function would be executed in R/zzz.R during installation. I was hoping the freshly downloaded JAR file would then be copied from inst/java to java/ in the installation directory of the package in the library path, but this does not seem to be the case. Even if it were copied to the desired location, the installed package size would still be too large and would yield a note. I would be grateful if somebody could suggest a best practice to deal with this problem. Should I aim to include the JAR or store it online? If include, how do I deal with the size limitation of the R package for CRAN? If store online, how do I deal with the unreliability of GitHub and other issues? Many thanks in advance, Philip -- Philip Leifeld Professor, Department of Government University of Essex http://www.philipleifeld.com ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel