bugKawa - Bugs: bug #38311, FR: Publish Kawa 1.13 to Maven...


bug #38311: FR: Publish Kawa 1.13 to Maven Repository

Submitted by:  Daniel Gregoire <semperos>
Submitted on:  Tue 12 Feb 2013 04:24:29 AM UTC  
Category: NoneSeverity: 3 - Normal
Item Group: Feature RequestStatus: None
Privacy: PublicAssigned to: None
Open/Closed: Open

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


(Jump to the original submission Jump to the original submission)

Mon 24 Oct 2016 09:13:59 PM UTC, comment #12:

This would be positive towards the android effort (thinking of the updated tutorial). Although not a big deal for users experienced in both Android and Kawa (drop the jar somewhere, specify it in the build configuration), it is valuable to make it as frictionless for people new in either, think those landing on the webpage and wanting to check whether they can build a silly app in ~ an hour. The usual way to use libraries in an android project is to specify the following sections in the build.gradle file:

repositories {

dependencies {
compile 'com.google.guava:guava:18.0'


Including jcenter() in the "repositories" block is quasi-standard. The current alternative is:

dependencies {
compile files('./libs/kawa.jar')

which is not taxing in number of characters but, as explained above, in number of steps before getting something working.


I wonder how could/should we deal with different jars for different platforms (java{6,7,8,9}, android).

Daniel, Jim, I'd appreciate your input on this, as you have more experience with Maven.


Per, assuming you still find this worthwhile, I'll take a look at the process of setting up a repository in jCentral and, more importantly, the process for updating it with new releases.

Best regards,

Adrián Medraño Calvo <medranocalvo>
Mon 19 Aug 2013 07:50:31 AM UTC, comment #11:

"Another question that releasing Kawa on Maven raises is: should the separate libraries, like gnu.bytecode, be released independently from Kawa?"

For now, I'd like to keep it simple, and just release a single monolithic jar. It might be plausible calling this project "kawa-scheme" since scheme is the default language - but other languages are still supported, so for simplicity it's reasonable to just call it "kawa" I think. At least for now,

The other question is whether to bother with 1.13 at all, rather than make a 1.14 release. There have been enough improvements since 1.13 that it's worth a release - and 1.13 had a couple of since-fixed problems. The main issue is that the documentation needs to be updated - most significantly the SRFI-108 and SRFI-109 features. With a bit of luck I might be able to get 1.14 released within a week.

Per Bothner <bothner>
Project Administrator
Sat 17 Aug 2013 07:23:13 PM UTC, comment #10:

As long as the release blessed by this project uses something like a group ID of org.gnu.kawa and an artifact ID of kawa, folks will see that as more reputable and will also see the more recent release date.

You can certainly publish a JAR to Maven Central via Sonatype simply with the the JAR and a correctly-formatted pom.xml file. I think the long-term solution to keeping Kawa releases available on Maven Central is to tackle a small-scale Mavenization of Kawa that defers to the existing Ant scripts that already build the project, which can be done without changing the Ant side of things by using the Maven AntRun plugin.

Another question that releasing Kawa on Maven raises is: should the separate libraries, like gnu.bytecode, be released independently from Kawa? Kawa stands right now as a jar-with-dependencies, but since it's also designed as a language-building framework, it might make sense to consider releasing those sub-projects independently as well.

Sorry not to be more helpful. Here's a project that I released on Maven Central; the README includes detailed instructions of how I released both staging and production releases via Sonatype, and the pom.xml file includes everything required by Maven Central:


Daniel Gregoire <semperos>
Sat 17 Aug 2013 06:40:25 PM UTC, comment #9:

How can I tell who uploaded kawa-1.7? It doesn't look like I did it - when I type in my email address into ForgotLoginDetails.jspa I get "No user with that email address exists." Judging from:
it may have been Eric Merritt, whose name I don't recognize.

"The primary obstacle to Mavenizing" Kawa is not the publication process, however, but rather simply building Kawa using Maven."

It looks like the 1.7 upload was just the jar (and pom file), without any attempt to Mavenize Kawa. That might be enough for now. Mavenizing Kawa seems a major task - I don't know if it can be done without major changes to the directory structure, which I don't think I'm ready for.

Per Bothner <bothner>
Project Administrator
Sat 17 Aug 2013 02:52:00 PM UTC, comment #8:

Jim -- Thanks for continuing this effort. My needs and time constraints have changed and I won't be continuing this effort in the near future.

The process of publishing through Sonatype is a relatively painless one. They are very responsive and the process is well documented. The most important point here is: someone who is invested in the project for the long run needs administrative permissions over the Sonatype repository, so that new releases can be made when desired.

The primary obstacle to Mavenizing" Kawa is not the publication process, however, but rather simply building Kawa using Maven. Since the build is Ant-based, whoever finishes this work will need to use the Maven AntRun plugin to call all the necessary Ant tasks to build the project, and then add in the pieces that Maven Central requires and that will make cutting releases from Maven easy to repeat.

I'm happy to help with specific problems, so feel free to attach patches or bring up questions if you make progress, but I don't have time to take this on myself.

Daniel Gregoire <semperos>
Sat 17 Aug 2013 05:33:47 AM UTC, comment #7:

Has there been any progress on this? I just discovered Kawa and want to include it in my project (which involves sending code over an untrusted network; LISP/Scheme is much easier to self-analyze than other languages). However, in my project I'm restricted to Maven only.

I had resigned myself to using the only version available, which is 1.7 (10 years old!), and I've been trying to see if I can work within that constraint. After an all-day documentation binge, I see that the reason type declarations don't work for me is because it's a new feature. Static type checking would be useful to have, so I'd like to know--- is there any show-stopper keeping the new version from being pushed out to Maven Central?

Unfortunately, I have no experience with putting code into a Maven repository, so I don't think I can take over the responsibility. However, looking at the link from Daniel's last comment, the only additional information they want (beyond what is already in the 1.7 version) is the following:

<description>Kawa is a programming language for the Java platform. It is an implementation of Scheme, which, is in the Lisp family of programming languages. Kawa has many useful features, including convenient integration with Java. It can be used as a "scripting language", but includes a compiler and all the benefits of a "real" programming language, including optional static typing, so Kawa programs can be as efficient as Java.</description>
<name>Per Bothner</name>

For the rest, you can re-use the pom.xml from the 1.7 version (http://search.maven.org/#artifactdetails%7Ckawa%7Ckawa%7C1.7%7Cjar). That is, unless you want to change the license to


(It currently says "modified GNU GPL (General Public License)", which you said want to fix everywhere it appears.)

Jim Pivarski <pivarski>
Mon 25 Feb 2013 04:23:10 AM UTC, comment #6:

Adding this here not to lose it.


This lists the required fields in the POM configuration file, as well as the three artifacts that need to be generated (namely, the main JAR, a JAR dedicated to Javadocs, and a JAR with the original sources).

Using Sonatype will allow Kawa a great deal of flexibility. The repository supports not only release builds, but also SNAPSHOT builds if desired, and provides an automatic migration path such that release JAR's reach Maven central without any extra work on our part.

Daniel Gregoire <semperos>
Tue 12 Feb 2013 10:22:28 PM UTC, comment #5:

Great. Thanks.

Per Bothner <bothner>
Project Administrator
Tue 12 Feb 2013 10:15:20 PM UTC, comment #4:

That's fair enough, and I'm happy to contribute in any way that I can. If it ever becomes an issue, I can always transfer ownership back to you or someone else.

I'll make the groupId "org.gnu.kawa" and the artifact id "kawa", so folks will be able to add it as a dependency with the following:


The packaging in Kawa's source obviously uses "gnu.kawa", but I see other GNU Maven artifacts modeled like the above. Let me know if this presents an issue.

In the mean time, I'll research how to get JAR's posted to Maven Central.

Daniel Gregoire <semperos>
Tue 12 Feb 2013 09:41:37 PM UTC, comment #3:

I see no reason why I can't delegate to you to create and maintain an official Kawa Maven entry.

Technically Kawa is a GNU project. Currently, I make the decisions and do most of the work, and I'm the only one checking in patches. However, it would be nice if we could have more people do more of the work (and I could relax my control-freakism ...). Letting you handle the Maven aspects seems a no-brainer.

Per Bothner <bothner>
Project Administrator
Tue 12 Feb 2013 03:16:33 PM UTC, comment #2:

Perhaps you didn't release it. I was just looking at the project information you can see on the right pane of this page, and assumed it was you: http://search.maven.org/#artifactdetails%7Ckawa%7Ckawa%7C1.7%7Cjar

Whoever posted that JAR now has ownership of the kawa/kawa group and artifact id's. In general, whoever "owns" a project takes control of the appropriate group and artifact id's for Maven, so no one else can post malicious JAR's posing as yours, etc. I've not posted to Maven Central specifically before, but for posting to things like Clojure's Maven repository Clojars, I was only required to create an account and register an SSH public key. I then just scp the pom.xml and JAR file of a release to post a new version of a Clojure library to that Maven repository, which just becomes another step in my release build process.

If you're not a Maven user, I'd be happy to contribute a stripped-down pom.xml file that would satisfy Kawa's needs for being posted to a Maven repo.

If you're not inclined to add this, I could post a JAR of Kawa myself, and I would do it as something like "com.semperos/kawa" so it'd be clear it wasn't official. I just thought it'd be good to have there from you, so folks who approach trying out Java tools using Maven would have an easy time pulling in the latest Kawa.

Daniel Gregoire <semperos>
Tue 12 Feb 2013 08:15:14 AM UTC, comment #1:

I don't remember releasing Kawa for Maven, and I don't know what's involved. Is there any reason you can't do it?

Per Bothner <bothner>
Project Administrator
Tue 12 Feb 2013 04:24:29 AM UTC, original submission:

I see that you made a release to Maven Central for Kawa 1.7 back in 2005. I'm opening this issue to request that you release 1.13 to Maven Central as well.

I'm writing a simple build library for compiling web client-side assets like CoffeeScript, LESS, etc., using a simple Java stack. I'm already including Kawa as a scripting language (via javax.script) to allow folks to easily script their builds.

I use Maven for dependency and build management. It would make the build more consistent and reliable if folks could download Kawa as a dependency from Maven Central (or other public Maven repository of your choosing), instead of me adding instructions to manually download and install it.

If this is a burden, please let me know if there is anything I can do to help. Thanks for a great piece of software.

Daniel Gregoire <semperos>


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by medranocalvo (Posted a comment)
  • -unavailable- added by pivarski (Posted a comment)
  • -unavailable- added by bothner (Posted a comment)
  • -unavailable- added by semperos (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Please enter the title of George Orwell's famous dystopian book (it's a date):



    No Changes Have Been Made to This Item

    Back to the top

    Powered by Savane 3.1-cleanup