Como criar um projeto SBT com Intellij Idea?
-
27-09-2019 - |
Pergunta
Acabei de começar com o desenvolvimento do Scala/LiftWeb/SBT e gostaria de importar um projeto SBT no Intellij Idea. Na verdade, consegui importar meu projeto de duas maneiras diferentes:
1) com maven. Criei um projeto MAVEN e, do topo, criei um projeto SBT, que importava no Intellij. Eu poderia começar facilmente, parar o servidor Jetty e fazer outras coisas. Mas não é isso que eu quero. Eu quero fazer as mesmas coisas, apenas sem Maven. Isso me levou a
2) com eclipse. Então, criei um novo projeto SBT (com um pequeno script que escrevi, configurando o projeto SBT para ser um projeto da web). Usei então o plug -in SBT -Ecipify para 'converter' o projeto para o Eclipse, que eu importei no Intellij (fonte existente -> eclipse). Mas os problemas começaram aqui: não consigo fazer o plugin Intellij SBT funcionar.
Alguém pode me ajudar com isso?
Solução
Existem três maneiras básicas de como criar um projeto - as versões modernas do Intellij podem importar o projeto SBT para fora da caixa; caso contrário, você poderá usar o plug -in SBT para gerar projeto Intellij ou usar o plug -in Intellij scala para criar um projeto SBT. Os recursos básicos funcionam fora da caixa usando as duas soluções, algumas construções complexas podem ter problemas; portanto, tente outras ferramentas para ver se funciona lá.
Intellij
A idéia de Intellij se tornou muito melhor nos dias de hoje. A versão atual (14.0.2) suporta projetos SBT prontos para a caixa com o plug -in Scala. Basta instalar o plug -in e você poderá abrir projetos Scala/SBT sem problemas.
Com o plug -in, apenas aponte para um projeto SBT e a ideia oferecerá um assistente para abrir esse tipo de projeto.
Plugin Intellij Scala
O plugin Intellij pode ser encontrado aquihttp://confluence.jetbrains.com/display/sca/scala+plugin+for+Intellij+idea ou pode ser instalado Directoly a partir do IDE usando Configurações -> Plugins Dialog. Depois, pode -se simplesmente fazer o arquivo -> novo projeto -> scala -> SBT baseado. Intellij gerará compilação básica. SBT, baixará as dependências necessárias e o projeto aberto.
Plugin SBT
O plugin SBT que gera um projeto de idéia baseado nos arquivos SBT pode ser encontrado aqui: https://github.com/mpeltonen/sbt-idea
SBT 12.0+ e 13.0+
Basta adicionar addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.5.2")
para o seu build.sbt
; Não são necessários resolvedores adicionais.
Versões mais antigas:
SBT 0,11+
Criar e adicionar as seguintes linhas a ~/.sbt/plugins/build.sbt
OU PROJECT_DIR/project/plugins.sbt
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/" addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")
Usar gen-idea
no SBT para criar arquivos de projeto de idéia.
Por padrão, os classificadores (ou seja, fontes e javadocs) das dependências do SBT e da biblioteca são carregados se encontrados e referências adicionadas aos arquivos do projeto IDEA. Se você não quiser baixar/fazer referência a eles, use o comando gen-idea no-classifiers no-sbt-classifiers
.
SBT 0.10.1(De acordo com o autor do plugin, 0,10.0 não vai trabalhar!)
Crie e adicione as seguintes linhas a ~/.sbt/plugins/build.sbt:
resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"
libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"
Usar gen-idea
Tarefa SBT para criar arquivos de projeto de idéia.
Por padrão, os classificadores (ou seja, fontes e javadocs) das dependências do SBT e da biblioteca são carregados se encontrados e referências adicionadas aos arquivos do projeto IDEA. Se você não quiser baixar/fazer referência a eles, use o comando gen-idea no-classifiers no-sbt-classifiers
.
SBT 0.7
Para usá -lo, basta executar isso no seu shell SBT, ele usará o plug -in como um programa externo:
> *sbtIdeaRepo at http://mpeltonen.github.com/maven/
> *idea is com.github.mpeltonen sbt-idea-processor 0.4.0
...
> update
...
> idea
...
Você também pode adicionar características na definição do seu projeto, como deseja:
import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
// ...
}
Outras dicas
Por enquanto eu faço isso à mão. É bastante simples.
- Crie o projeto com SBT
- Crie um novo projeto de idéia com o mesmo caminho raiz
- Crie um módulo com o mesmo caminho raiz
- Defina SRC/Main/Scala como um caminho SRC no módulo
- Defina SRC/Test/Scala como um caminho de teste no módulo
- Adicione Scala-Library.jar como uma biblioteca
- Adicione Lib (se estiver presente) como um diretório JAR em uma biblioteca de módulos
- Adicione Lib_Managed/Compile (se estiver presente) como um diretório JAR dentro de uma biblioteca de módulos
- Adicione Lib_Managed/Test (se estiver presente) como um diretório JAR dentro de uma biblioteca de módulos
É isso da memória. Seria melhor se fosse automatizado, mas não é grande coisa como é agora.
Uma nota de cautela: a abordagem acima não funciona bem com o SBT da nova escola, o IE Versões 0.10 e o mais recente, porque não copia dependências no lib_managed por padrão. Você pode adicionar
retrieveManaged := true
para o seu build.sbt para copiá -lo as dependências para lib_managed.
Tempus fugit E a idéia de Intellij se tornou muito melhor nos dias de hoje. Afinal, é 2015, não é?
Tendo dito isto, A versão mais recente do Intellij Idea 14.0.2 suporta projetos SBT fora da caixa com o plugin scala. Basta instalar o plug -in e você poderá abrir projetos Scala/SBT sem muitos problemas.
Estou usando a versão de acesso antecipado do plug -in, que é 1.2.67.6.EAP a partir do momento da redação.
Com o plug -in, apenas aponte em um projeto SBT e a ideia oferecerá a você um assistente para abrir esse tipo de projeto.
Sobre o SBT-idea no SBT 0,12,4
Para SBT 0.12.4 O arquivo de configuração do plug -in em todo o sistema - ~/.sbt/plugins/build.sbt
ou PROJECT_DIR/project/plugins.sbt
- Deve ter as seguintes linhas:
resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin(dependency="com.github.mpeltonen" % "sbt-idea" % "1.5.0-SNAPSHOT")
Corre sbt gen-idea
Para gerar arquivos de projeto de idéia.
Ler O site do plug-in de Idea SBT Para informações mais atualizadas. Você também pode encontrar a entrada do meu blog Importar projeto baseado em SBT para Intellij Idea 13 (com SBT-Idea, Scala 2.11 e SBT 0.12) útil.
Para SBT 0.7
Ver a resposta em outro lugar nesta página.
Para SBT 0.10
Clone e construa o SBT-idea de Ismael:
git clone https://github.com/ijuma/sbt-idea.git
cd sbt-idea
git checkout sbt-0.10
./sbt package
Crie um diretório Lib Plugin SBT se você ainda não tiver um
mkdir -p ~/.sbt/plugins/lib
Copie o frasco construído na etapa um aqui
cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib
Reinicie ou recarregue o SBT, então você pode correr gen-idea
(ou gen-idea with-classifiers
Se você quer fontes e javadoc em Intellij também)
Fonte: Sugestão dos tackers no grupo de mensagens.
Na idéia Intellij 13.x em si
Você pode abrir um projeto baseado em SBT na Idea hoje em dia. Ele criará o projeto e os módulos necessários e manterá suas dependências atualizadas sempre que você fizer alterações nos scripts de construção.
Acabei de passar por toda essa dor. Passo dias tentando obter um ambiente aceitável e cheguei à conclusão de que Ensime, SBT e Jrebel serão meu ambiente de desenvolvimento por algum tempo. Sim, ele está voltando para o Emacs, mas o ensime o transforma um pouco ou uma idéia com refatoração, suporte de depuração, navegação etc. Não é nem de longe tão bom quanto o eclipse (java), mas, a menos que os plugins scala funcionem melhor, seja o Melhor que temos.
Até que os ambientes de desenvolvimento do Scala se preparem para o Snuff (eclipse ou Intellij), eu não vou me preocupar. Eles são um buggy demais.
Veja a discussão no site do elevador.
http://groups.google.com/group/liftweb/browse_thread/thread/6e38e7396575052#
Dentro desse tópico, há um link para um Howto para o Intellij, mas, embora meio que funcione, há muitos problemas que o tornam um pouco menos tão útil.
http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/
As respostas são antigas para 2014. em Intellij 13.x, o plugin scala é ver 0.41.2 (o SBT está incluído).
Meu A versão SBT é 0,13.5 (terminal : sbt sbtVersion
)
Vá para a pasta raiz do projeto e entre no terminal
sbt idea
Você verá duas novas pastas ocultas .idéia e .idea_modules.
Em seguida, em Intellij, Arquivo> Abra> Selecione o projeto. Deve abrir o projeto sem nenhum problema.
Antes de começar a criar seu projeto SBT, verifique se o plug -in do Scala é baixado e ativado na Intellij Idea.
Abaixo o link explica tudo o que você precisa saber.
https://www.jetbrains.com/help/idea/2016.1/getting-started-with-sbt.html