Coder Social home page Coder Social logo

sbt-idea-plugin's Introduction

sbt-idea-plugin

Version Build Status

SBT plugin that makes development of IntelliJ IDEA plugins in Scala easier.

Installation

From version 1.0.0, this plugin is published for sbt 0.13 and 1.0

  • Insert into project/plugins.sbt:
addSbtPlugin("org.jetbrains" % "sbt-idea-plugin" % "1.0.1")
  • Insert into build.sbt:
enablePlugins(SbtIdeaPlugin)
  • Run SBT and execute updateIdea task. It will download IDEA and external plugins used in project

  • Start coding

Available settings

ideaBuild in ThisBuild :: SettingKey[String]

Default: LATEST-EAP-SNAPSHOT

IDEA's build number. Binaries and sources of this build will be downloaded from https://jetbrains.com and used in compilation and testing. You can find build number of your IDEA in Help -> About dialog. However, it might be incomplete, so I strongly recommend you to verify it against available releases and available snapshots.

ideaEdition in ThisBuild :: SettingKey[IdeaEdition]

Default: IdeaEdition.Community

Edition of IntelliJ IDEA to use in project.

ideaDownloadDirectory in ThisBuild :: SettingKey[File]

Default: baseDirectory / "idea"

Directory where IDEA binaries and sources will be downloaded.

ideaDownloadSources in ThisBuild :: SettingKey[Boolean]

Default: true

Flag indicating whether IDEA sources should be downloaded alongside IDEA binaries or not.

ideaInternalPlugins :: SettingKey[String]

Default: Seq.empty

List of bundled IDEA plugins to depend upon. Their jars will be used in compilation. Available plugins can be found in ideaBaseDirectory / "plugins" directory.

ideaExternalPlugins :: SettingKey[IdeaPlugin]

Default: Seq.empty

List of external IDEA plugins to depend upon. Their zips or jars will be downloaded and unpacked in ideaBaseDirectory / "externalPlugins" directory, each in its own subdirectory. They will be used in compilation.

ideaPublishSettings :: SettingKey[PublishSettings]

Default: PublishSettings(pluginId = "", username = "", password = "", channel = None)

Settings necessary for uploading your IDEA plugin to https://plugins.jetbrains.com

ideaPluginFile :: TaskKey[File]

Default: aliased to package in Compile

Your IDEA plugin file to publish on https://plugins.jetbrains.com

Tasks

updateIdea :: TaskKey[Unit]

Download IDEA's binaries and sources, put them into ideaBaseDirectory directory. Download external plugins and put them in ideaBaseDirectory / "externalPlugins" directory. Automatically add IDEA's and plugin's jars into unmanagedJars in Compile.

publishPlugin :: TaskKey[String]

Upload and publish your IDEA plugin on https://plugins.jetbrains.com. Returns URL of published plugin.

Notes and best practices

  • If you use sbt-assembly plugin to produce a fat jar to distribute your plugin you should avoid putting IDEA's jars into this fat jar of yours. To achieve this insert

    assemblyExcludedJars in assembly := ideaFullJars.value

    into your build.sbt

  • If you depend upon one or more external plugins, add

    -Didea.plugins.path=$PROJECT_DIR$/<ideaBaseDirectory>/externalPlugins
    

    to your run configuration's VM options in order for debug IDEA instance to use already downloaded plugins.

sbt-idea-plugin's People

Contributors

jastice avatar psliwa avatar

Watchers

 avatar  avatar

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.