GithubHelp home page GithubHelp logo

adedayo / intellij-community Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jetbrains/intellij-community

2.0 2.0 1.0 1.93 GB

IntelliJ IDEA Community Edition

Home Page: http://www.jetbrains.com/idea/

License: Apache License 2.0

Java 84.71% HTML 0.99% Lex 0.09% Shell 0.04% Python 12.26% Batchfile 0.04% NSIS 0.05% JavaScript 0.07% C# 0.01% Smalltalk 0.01% Erlang 0.01% FLUX 0.01% AspectJ 0.01% Perl 6 0.01% Groovy 1.25% Scala 0.02% Protocol Buffer 0.01% Kotlin 0.26% C++ 0.11% C 0.12%

intellij-community's Introduction

More modular IntelliJ CE SDK components

Motivation

I use IntelliJ extensively for software development and I have recently found that its platform SDK libraries are awesome for building various tools: in my case, I am piggybacking on the platform to develop various security-centric static analyses. However, it doesn't appear that the community has prioritised the use of the platform SDK outside of the IntelliJ IDE and its derivatives. My use cases do not always require a full IDE and may even be run as small, headless tools. While I plan to write plugins for the IntelliJ IDE and potentially other IDEs, there are some aspects of my tools that make sense on a continuous integration server and in other headless environments. Having bite-sized libraries from the IntelliJ platform SDK that I can build upon is a good starting point for writing such tools. So, I have decided to package those libraries and to make them available on (Maven) Central, which someone else in a similar situation may find useful. Locate them under the group id com.github.adedayo.intellij.sdk at http://search.maven.org/

The idea of this fork of the IntelliJ IDEA Community Edition is simply to provide build scripts to package the components of IntelliJ platform and plugins SDK as individual jar libraries available on (Maven) Central repositories making their usage outside the IDE easier. As I have found out, there is a bit of learning curve in navigating the IntelliJ SDK libraries (documentation is getting better though), and knowing where the classes you need reside may involve a bit of searching, but hopefully having small bite-sized packaging of the libraries will facilitate using the components that you need without having to bundle almost the entire IDE. It is also the hope that these bite-sized components may pave way for more future headless tools and libraries built on top of the awesome IntelliJ platform, but which can run outside of the IntelliJ IDE, providing many of the goodness of the IntelliJ platform SDK and plugins in custom, potentially headless, IDE-independent environments.

Version on (Maven) Central

The artifact version number matches the trunk revision number on the IntelliJ CE repository. So, for example, the artifact with the coordinate com.github.adedayo.intellij.sdk:java-psi-impl:142.1 is the build of the java-psi-impl library from the trunk revision 142, and the moniker 1 is just for my own sequential numbering of the deployed version on Central. Newer builds, if necessary, of the same trunk version will simply have the release number increased to 2, 3, ...

Note: I've tried to be a good citizen on Central, providing both the libraries and the associated sources on Central. But it is only best effort, because there were a few source files that I couldn't map to the relevant class file. These were only just a few - perhaps they were auto-generated during IntelliJ build, or I couldn't somehow find them. Look at the Scala script https://github.com/adedayo/intellij-community/blob/master/modules-generator/GenerateModules.scala that contains the core logic of my packaging and build to get an idea of what was done. Ideas and improvements to the packaging are indeed welcome, or better still if the IntelliJ community can take up the packaging, that would be awesome and make my fork unnecessary. That would be more desirable to me! :-)

Build and deploy

Note to self: to build and deploy, just issue mvn package from the root

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.