Suggestions for other/better Free/Open Source plugins for current Intellij CE are welcome:
Let’s say you work on a Java application and want to frequently make it available for download so that user’s can easily try the latest version.
Let’s say you work primarily on your laptop or personal computer using a Java IDE and commit code changes, but you don’t want to spend time manually building jars, packaging war or zip files, testing your application or uploading files to a website, etc.
Instead you want to have a fully automated process that compiles your source code, runs automated tests and other quality control mechanisms, builds your application and uploads the result to a public website.
But you don’t want to install any infrastructure for this and not run anything besides Java and your IDE on your own machine(s).
Basically you want to use developer-friendly reliable cloud services but you don’t want to pay a single cent.
All of this is possible, as long your code is Open Source:
- Host your source code on github
- Let travis-ci run vour build process
- Let travis-ci upload the build result to bintray
For details, you can take a look at one of my github projects.
Relevant config files:
Soon I will probably add more detailed instructions to this blog post on how to set up the cloud services.
Some file types are really just zipped (or maybe gzipped) folders containing xml and/or other plaintext based files.
- *.epub e-books
- OpenDocument files
- Java source jar files
- JEE web application archives (*.war)
- Pentaho report files (*.prpt)
If you happen to have such files in a software project, and don’t want to treat them like opaque binary blobs, you need a tool that helps you to transparently unzip, act on and rezip them. Also you probably want to be able to diff them without resorting to commercial tools like BeyondCompare.
IntelliJ CE (Community Edition) supports archive diffs as part of its regular Comparing Files functionality. All you need to do is make sure the file extension of the file types you want to be treated as archives are accordingly registered in Settings – Editor – File Types.
The screenshot below shows *.war and *.jar registered as Archive file name patterns (by default) and *.prpt (Pentaho report files) as an example of a manually added pattern:
I sometimes want to create a source code repository and build process for a GPL licensed software project, where the sole copyright holder (“owner”) is a single legal entity, like a company or a foundation.
This is how I do it:
- Link to the license from README.md (e.g. the Free Software Foundation’s GPL, version 2)
- At top of each source file: Copyright notice, license statement, warranty disclaimer
- Include a plain-text copy of the full license in the root of your distributable package(s)
- In the README.md, indicate that the project mandates copyright assignment
- Define the legal agreement process between code contributors and the project owner
The GPL was chosen for its strong copyleft nature and combined with the sole copyright holder approach to enable dual licensing business models.
On sites like github, the code contribution itself is usually done by pull request. The legal agreement process between code contributor and project owner should be complete before the pull request is accepted.
I am not yet sure how to best automate updating the year range in the copyright notice, probably at commit time.
The new Subversion 1.8 features look quite good for a centralized Version Control System (VCS).
But note that the Subversion 1.8 working copy format is backwards-incompatible. Some tools like recent TortoiseSVN versions will use the 1.8 format by default which will cause compatibility problems for IntelliJ and any other tools that do not yet support it.
So for now, it is probably better to stick with 1.7 and wait until all your tools fully support 1.8. For IntelliJ you might want to watch [IDEA-94942] for status updates.