jip 0.5.1 : Python Package Index
jip 0.5.1
jip installs packages, for Jython
Latest Version:
0.7Jip is the jython equivalent of pip to python. It will resolve
dependencies and download jars for your jython environment.License
jip itself is distributed according to MIT License .
Install
jip is required to run within virtualenv, which is a best practice
for python/jython developers to created a standalone, portable
environment.Create virtualenv with jython:
virtualenv -p /usr/local/bin/jython jython-envActivate the shell environment:
cd jython-dev source bin/activateDownload and install jip with pip:
pip install jipUsage
Install a Java package
jip will resolve dependencies and download jars from maven
repositories. You can install a Java package just like what you do
python with pip:jip install <groupId>:<artifactId>:<version>Take spring as example:
jip install org.springframework:spring-core:3.0.5.RELEASEResolve dependencies defined in a pom
jip allows you to define dependencies in a maven pom file, which is
more maintainable than typing install command one by one:jip resolve pom.xmlResolve dependencies for an artifact
With jip, you can resolve and download all dependencies of an
artifact, without grab the artifact itself (whenever the artifact
is downloadable, for example, just a plain pom). This is especially
useful when you are about to setup an environment for an artifact.
Also, java dependencies for a jython package is defined in this
way.jip deps info.sunng.gefr:gefr:0.2-SNAPSHOTUpdate snapshot artifact
You can use update command to find and download a new deployed
snapshot:jip update info.sunng.bason:bason-annotation:0.1-SNAPSHOTRun jython with installed java packages in path
Another script jython-all is shipped with jip. To run jython
with Java packages included in path, just use jython-all
instead of jythonList
Use jip list to see artifacts you just installed
Remove a package
You are suggested to use jip remove to remove an artifact. This
will keep library index consistent with file system.jip remove org.springframework:spring-core:3.0.5.RELEASECurrently, there is no dependency check in artifact removal. So you should
be careful when use this command.Clean
jip clean will remove everything you downloaded, be careful to
use it.Search
You can also search maven central repository with a jip search [keyword].
The search service is provided by
Sonatype's official Maven search .Persist current environment state
Before you distribute you environment, you can use freeze to persist
current state into a pom file.jip freeze > pom.xmlConfiguration
You can configure custom maven repository with a dot file, jip will
search configurations in the following order:
- $VIRTUAL_ENV/.jip, your virtual environment home
- $HOME/.jip, your home
Here is an example:
[repos:jboss] uri=http://repository.jboss.org/maven2/ type=remote [repos:local] uri=/home/sun/.m2/repository/ type=local [repos:central] uri=http://repo1.maven.org/maven2/ type=remoteBe careful that the .jip file will overwrite default settings, so
you must include default local and central repository explicitly.
jip will skip repositories once it finds package matches the maven
coordinator.From 0.4, you can also define repositories in pom.xml if you use
the resolve command. jip will add these custom repositories
with highest priority.Distribution helpers
From 0.4, you can use jip in your setup.py to simplify jython
source package distribution. Create pom.xml in the same directory
with setup.py. Fill it with your Java dependencies in standard way.
In this file, you can also define custom repositories. Here is
an example:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> ... <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> ... </dependencies> <repositories> <repository> <id>sonatype-oss-sonatype</id> <url>http://oss.sonatype.org/content/repositories/snapshots/</url> </repository> </repositories> </project>And in your setup.py, use the jip setup wrapper instead of the one
provided by setuptools or distutils. You can add keyword argument
pom to specify a custom name of the pom file.from jip.dist import setupOther than the traditional pom configuration, jip also allows you to
describe dependencies in python. You can define a data structure in
your setup.py like:requires_java = { 'dependencies':[ ## (groupdId, artifactId, version) ('org.slf4j', 'slf4j-api', '1.6.1'), ('org.slf4j', 'slf4j-log4j12', '1.6.1'), ('info.sunng.soldat', 'soldat', '1.0-SNAPSHOT'), ('org.apache.mina', 'mina-core', '2.0.2') ], 'repositories':[ ('sonatype-oss-snapshot', 'http://oss.sonatype.org/content/repositories/snapshots/') ] }And pass it to jip setup as keyword argument requires_java. Once
jip found this argument, it won't try to load a pom file.from jip.dist import setup setup( ... requires_java=requires_java, ...)Another resolve command was added to setuptools, you can use this
command to download all dependencies to library pathjython setup.py resolveAll dependencies will be installed when running
jython setup.py installSo with jip's setup() wrapper, pip will automatically install
what your package needs. You can publish your package to python
cheese shop, and there is just one command for everythingpip install [your-package-name]