codenameone-cli

Toolkit for building Cross-platform mobile applications in Java

codenameone-cli

Command-line tools for Codename One

Project Status: This project is at a very early stage. If you want to get started with Codename One, building cross-platform mobile apps in Java, I recommend you start with the official Codename One Getting Started Tutorial. Once you are familiar with the toolkit, you may want to revisit this command-line tool as it aims to boost development productivity, especially for developers who are comfortable with the command-line.

Features

Creating Projects

  • Create new Codename One projects for Netbeans, Eclipse, or IntelliJ
  • Use any existing CN1 project as a template.
  • Select existing template from GUI template browser
  • Run templates in Codename One simulator

Running Apps

  • Run Codename One apps in the CN1 simulator

Distributing Apps

  • Easily build and distribute your CN1 applications directly from the command-line

Project Settings

  • Open Codename One settings for projects from the command-line

Requirements

  • NodeJS - Only used for distribution of the tool via NPM

Installation

Windows

npm install -g codenameone-cli

Linux/Mac

sudo npm install -g codenameone-cli

NOTE: The above commands will install it globally, and you require admin permissions to do this typically (hence the sudo in the linux/mac command). You can also install it locally, using npm install codenameone-cli in which case the command will be installed at ./node_modules/.bin/cn1.

Usage

General Usage

Usage: codenameone-cli [command]

Commands:
  create - Create a new Codename One Project
  settings - Open project settings for project in current directory.
  css - CSS-related commands
  test - Unit-test related commands
  install-jars - Install latest jars into project
  install-tests - Install tests.xml file with some test targets
  install-appium-tests - Install appium.xml file with some appium tests defined.
  git-init - Same as git init, but adds suitable .gitignore file.
  git-clone - Same as git clone, but installs jars.  

Creating Projects

cn1 create <dest-dir> <package-id> <main-class-name> [-i Netbeans|Eclipse|IntelliJ] [-t http://example.com/project/template.zip]

Examples

Creating a basic project in directory named "helloworld":

cn1 create helloworld com.mycompany.hello HelloWorld

Follow the prompt for the other details (e.g. package id, main class, IDE, template, etc...)

Using the GUI "create project wizard" ... Just add -g flag:

cn1 create helloworld -g

This will open a GUI form that allows you to browse and select a template to use for the project.

Create project form

You can click on any of the templates, and get more details about it, or run the template inside the Codename One simulator directly.

Template details panel

Specifying Template and IDE in Command-line

cn1 create helloworld com.mycompany.hello HelloWorld \
    -i Netbeans \
    -t https://github.com/codenameone/SQLSample/archive/master.zip

Opening Project Settings

Navigate to any Codename One project directory, and type:

cn1 settings

This will open the Codeame One settings app so you can configure your project (e.g. add cn1libs, set up iOS signing, add build-hints etc..

Contributing Application Templates

The templates listed in the "Create Project Form" are all loaded from this json file hosted on Github. To add your own templates, you can simply fork the codenameone-templates project, and add your template to that JSON file. Then issue a pull request. We'll review it and merge it if appropriate.

Of course, templates don't need to be listed there to be available for use. If your Codename One project is on Github, you can simply provide the "master.zip" URL as the -t parameter of cn1 create and the template will be used.

Cloning Projects From github

Generally, when we host Codename One projects on Github, we strip out the common binaries like CodenameOne.jar, JavaSE.jar, etc... This can be a little annoying when you are cloning projects because you have to first copy the jar files back into the project before you can build it. The cn1 git-clone command is a thin wrapper around git clone that will automatically perform this housekeeping for you.

Example Usage

Let's take the KitchenSink project, for example.

$ cn1 git-clone https://github.com/codenameone/KitchenSink
Cloning into 'KitchenSink'...
Installing jars into KitchenSink...
Downloading 11606508 bytes
Download completed!
Project ready at KitchenSink

NOTE: It also works to specify only the project using "ownername/projectname", e.g. cn1 git-clone codenameone/KitchenSink

Now we can immediately build this project:

$ cd KitchenSink
$ ant jar

Or run it in the Codename One simulator:

$ ant run

Bonus Points: You can clone and run the project in a single line with:

$ cn1 git-clone https://github.com/codenameone/KitchenSink && cd KitchenSink && ant run

Finding Projects To clone

Use the list-demos command to find Codename One projects that can be cloned using the git-clone command.

Example

[source,bash]

$ cn1 list-demos

You'll get a readout like:

[source,bash]

shannah/GeoVizDemo : A demo app using the Codename One GeoViz Library

Adding Your Own Demos

The list-demos command lists all projects on Github that are tagged with both the codenameone and demo topics. If you have a demo project that you are hosting on Github, all you need to do is add these topics to your project, and your project will be returned by the list-demos command.