Menu

GradleToDo

Joern Huxhorn

Remaining TODOs before Gradle can fully replace Maven 2 for sulky and lilith

This page contains all remaining issues that I need to resolve before Maven 2 is fully replaced with gradle. I currently manage both Maven 2 and Gradle build files in parallel - but this is something I obviously would like to get rid of.

Any help would be seriously appreciated!


Current state

Here are some links to the parent poms of sulky and lilith as a fast shortcut:

These are the current lilith gradle files:

These are the current sulky gradle files:


General

General issues that are related to both sulky and lilith.

maven-gpg-plugin

Is there already GPG support available in Gradle?

What do I have to do to get the artifacts signed with GPG before deployment if a certain property is set?

I've done it like this in Maven 2.

<properties>
    <gpg.executable>gpg2</gpg.executable>
    <gpg.useagent>true</gpg.useagent>
    <gpg.keyname>740A1840</gpg.keyname>
</properties>

<profiles>
    <profile>
        <id>release-sign-artifacts</id>
        <activation>
            <property>
            <name>performRelease</name>
            <value>true</value>
        </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>sign-artifacts</id>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

Site generation

Is there a way to generate a site roughly comparable to the one that Maven 2 generates? This isn't as important as the rest of the issues, though.

Nope, there isn't something comparable to Maven site generation.

Sonar support


Lilith specific

Issues remaining that prevent building the final application.

See http://github.com/huxi/lilith/tree/master/lilith/ and http://github.com/huxi/lilith/blob/master/lilith/pom.xml

Adding classpath and main class to manifest?

Done.

I have added the Main-Class attribute to the manifest but I'm unable to find a (working) way to create the Class-Path attribute.

The solution suggested in this mail to gradle-user doesn't work for me, probably since I'm not using a separate jar file.

Assemblies

Done.

I've been able to get most of it done. I'm just struggling to get the project artifact itself added to the libs directory. Beside adding it, it also needs to be renamed to lilith.jar instead of the full artifact name including version etc..

Relevant Gradle documentation:

Shading / UberJar

Done. This has been implemented in this commit.

One of my artifacts is a shaded jar containing everything needed in order to run Lilith in one single jar.

OS X support

Creation of Lilith.app and Lilith.dmg is done using the following configuration:

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>osxappbundle-maven-plugin</artifactId>
        <version>1.0-alpha-2</version>
        <!--
        <version>1.0-alpha-1</version>
        -->
        <configuration>
                <!--
                <dictionaryFile>${basedir}/src/main/mac-resources/Info.plist</dictionaryFile>
                -->
                <jvmVersion>1.5+</jvmVersion>
                <mainClass>de.huxhorn.lilith.Lilith</mainClass>
                <iconFile>${basedir}/src/main/mac-resources/Lilith.icns</iconFile>
                <javaApplicationStub>${basedir}/src/main/mac-resources/JavaApplicationStub</javaApplicationStub>
                <bundleName>Lilith</bundleName>
                <vmOptions>-Dcom.apple.macos.useScreenMenuBar=true</vmOptions>
        </configuration>
        <executions>
                <execution>
                        <phase>package</phase>
                        <goals>
                                <goal>bundle</goal>
                        </goals>
                </execution>
        </executions>
</plugin>

Handcrafted Gradle-Plugins

I'm currently implementing both a pgp-gradle-plugin (please take a look at the README - it contains infos about open issues and usage) and an osx-gradle-plugin.

Those are/will be contained in the huxi-gradle-plugins repository. Any help, suggestions, ideas or mehs are highly appreciated.

To be able to build the osx-gradle-plugin, I've implemented Apple PropertyList (plist) reading and writing in a new sulky-module: sulky-plist

This was necessary to be able to read an existing property list file, update some values and write it back into another file - all of this without risking any corruption.

Sonatype Repository

I'm trying to set up Sonatype as snapshot/release-repository for sulky & Lilith. This will replace the current sync to the central maven repository - and I hope it will be less painful in the end...


Related

Wiki: Home

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.