lintool / warcbase

Warcbase is an open-source platform for managing analyzing web archives
http://warcbase.org/
161 stars 47 forks source link

Should we periodically release pre-built binaries/jars? #240

Open ibnesayeed opened 8 years ago

ibnesayeed commented 8 years ago

Currently, in order to use warcbase, users need to clone the repo and build using maven. This requires users to have JDK and Maven installed on their machines. Should we consider tagged pre-built releases after remarkable changes?

dportabella commented 8 years ago

And publish it to Maven Central: http://www.sonatype.org/nexus/2015/01/08/deploy-to-maven-central-repository/

can I help you on this?

dportabella commented 7 years ago

Is it ok if I fork the project on github, I change version from 0.1.0-SNAPSHOT to 0.1.0a, I change the group name from org.warcbase to com.github.dportabella, and then I publish it to maven central? Or could you please release it yourselves?

lintool commented 7 years ago

No, please don't do that. I'll look into pushing artifacts onto Maven central. In the meantime, you can always publish Maven artifacts locally with mvn install.

dportabella commented 7 years ago

I already use mvn install locally, but it's a problem for the other members of the team which are not experts in Java/maven, and to setup our continuous integration tool. Ok, I'll wait.

lintool commented 7 years ago

I see - well, if it's a blocker then by all means publish your own version to Maven central. I'm a bit swamped these days (as well as @ianmilligan1) and don't want to hold up progress, if others are starting to adopt Warcbase... :)

Thanks for all your feedback, and we'll try to get to it as soon as we can...

dportabella commented 7 years ago

I see that you use these two other repositories: https://repository.cloudera.com/artifactory/cloudera-repos/ http://builds.archive.org:8080/maven2

for instance, warcbase-core depends on openwayback-core:2.0.0.BETA.2, which depends on com.sleepycat:je:4.1.6. this last artifact is only available on the uncommon repository: http://builds.archive.org:8080/maven2.

Is there a reason to use this specific 2.0.0.BETA.2 version of openwayback-core?. There 2.0.0 version already exists (and also 2.3.1): http://mvnrepository.com/artifact/org.netpreserve.openwayback/openwayback-core

dportabella commented 7 years ago

ok, so instead of publishing your artifact and (unpublished dependencies) to maven central, I created a maven repository on my github account: https://github.com/dportabella/3rd-party-mvn-repo

for anyone who wants to use the warcbase library without building it locally, he needs to add the following to his pom.xml:

<repositories>
  <repository>
    <id>dportabella-3rd-party-mvn-repo-releases</id>
    <url>https://github.com/dportabella/3rd-party-mvn-repo/raw/master/releases/</url>
  </repository>
  <repository>
    <id>dportabella-3rd-party-mvn-repo-snapshots</id>
    <url>https://github.com/dportabella/3rd-party-mvn-repo/raw/master/snapshots/</url>
  </repository>
</repositories>

or in scala build.sbt:

resolvers += "dportabella-3rd-party-mvn-repo-releases" at "https://github.com/dportabella/3rd-party-mvn-repo/raw/master/releases/"
resolvers += "dportabella-3rd-party-mvn-repo-snapshots" at "https://github.com/dportabella/3rd-party-mvn-repo/raw/master/snapshots/"

In case you are interested, I created this repo as follows:

# info on creating a maven repository on github:  https://cemerick.com/2010/08/24/hosting-maven-repos-on-github/
# info on big files in git: https://git-lfs.github.com/

# do create a new repository on github: https://github.com/dportabella/3rd-party-mvn-repo
# with name: dportabella/3rd-party-mvn-repo
# with description: maven repository for third-party unpublished artifacts

brew install git-lfs
git lfs install

mkdir /Users/david/3rd-party-mvn-repo
mkdir /Users/david/3rd-party-mvn-repo/snapshots
mkdir /Users/david/3rd-party-mvn-repo/releases

# org.warcbase:warcbase:0.1.0-SNAPSHOT
cd /tmp/
git clone http://github.com/lintool/warcbase.git
cd warcbase
mvn -DaltDeploymentRepository=snapshot-repo::default::file:/Users/david/3rd-party-mvn-repo/snapshots deploy -DskipTests

# com.sleepycat:je:4.1.6
mkdir /tmp/sleepycat
cd /tmp/sleepycat
wget -r -np "http://builds.archive.org/maven2/com/sleepycat/"
find . -iname index.html -delete
mkdir /Users/david/3rd-party-mvn-repo/releases/com/
mv builds.archive.org/maven2/com/sleepycat /Users/david/3rd-party-mvn-repo/releases/com/

# alternative to previous com.sleepycat:je:4.1.6
cd /tmp/
wget http://builds.archive.org/maven2/com/sleepycat/je/4.1.6/je-4.1.6.jar
wget http://builds.archive.org/maven2/com/sleepycat/je/4.1.6/je-4.1.6.pom
mvn -Dmaven.repo.local=/Users/david/3rd-party-mvn-repo/releases/ install:install-file -Dfile=je-4.1.6.jar -DpomFile=je-4.1.6.pom

cd /Users/david/3rd-party-mvn-repo
git init
git remote add origin git@github.com:dportabella/3rd-party-mvn-repo.git
git lfs track "*.jar"  # it creates .gitattributes and lfs/
git add .gitattributes releases/ snapshots/
git commit -m "added unpublished org.warcbase:warcbase:0.1.0-SNAPSHOT and its unpublished dependency com.sleepycat:je:4.1.6"

git push origin master:master

# test it
cd /tmp
wget "https://github.com/dportabella/3rd-party-mvn-repo/raw/master/releases/com/sleepycat/je/4.1.6/je-4.1.6.jar"
wget "https://github.com/dportabella/3rd-party-mvn-repo/raw/master/snapshots/org/warcbase/warcbase-core/0.1.0-SNAPSHOT/warcbase-core-0.1.0-20161019.161953-1.jar"
dportabella commented 7 years ago

Just find out: another option not to load github with big files, it is to copy the maven repo on a Dropbox account. so, I moved /Users/david/3rd-party-mvn-repo to /Users/david/Dropbox/Public/3rd-party-mvn-repo (notice that it needs to be inside the Public folder).

then, I ask Dropbox to share a link for any of the files, such as /Users/david/Dropbox/Public/3rd-party-mvn-repo/releases/com/sleepycat/je/4.1.6/je-4.1.6.jar, and I get the link: https://dl.dropboxusercontent.com/u/3796323/3rd-party-mvn-repo/releases/com/sleepycat/je/4.1.6/je-4.1.6.jar

So, we can replace my two github repositories: https://github.com/dportabella/3rd-party-mvn-repo/raw/master/releases/ https://github.com/dportabella/3rd-party-mvn-repo/raw/master/snapshots/ by my dropbox ones: https://dl.dropboxusercontent.com/u/3796323/3rd-party-mvn-repo/releases/ https://dl.dropboxusercontent.com/u/3796323/3rd-party-mvn-repo/snapshots/

dportabella commented 7 years ago

Any news on publishing to maven central?

dportabella commented 7 years ago

My team is asking me to switch to https://github.com/helgeho/ArchiveSpark because the dependency versions of Warcbase are not yet updated (such as openwayback-core:2.0.0.BETA.2), and warcbase has no published a release to maven yet.

I would prefer to stick to warcbase.

Any news on releasing to maven and updating the dependencies?

lintool commented 7 years ago

Hi @dportabella can you please reach out to @ianmilligan1 and myself over email? Let's move this discussion on a separate channel...

dportabella commented 7 years ago

Sure.