Como criar um projeto SBT com o IntelliJ Idea?

146

Comecei a desenvolver o Scala / LiftWeb / Sbt e gostaria de importar um projeto de Sbt no IntelliJ Idea. Na verdade, consegui importar meu projeto de duas maneiras diferentes:

1) com Maven. Criei um projeto Maven e, além disso, criei um projeto Sbt, que depois importei no IntelliJ. Eu poderia então facilmente iniciar, 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 o Eclipse. Então, criei um novo projeto Sbt (com um pequeno script que escrevi, configurando o projeto Sbt para ser um WebProject). Eu usei o plug-in sbt-eclipsify para 'converter' o projeto para o Eclipse, que então importei no IntelliJ (fonte existente -> eclipse). Mas os problemas começaram aqui: Não consigo fazer o plug-in IntelliJ Sbt funcionar.

Alguém pode me ajudar com isso?

ksemeks
fonte
Para alguém que precisa de uma resposta rápida ou se é um requisito urgente, basta ir ao github e encontrar um projeto simples do scala. Faça o download e importe no seu IDE. Você deve poder acessar o projeto scala. Happy time
Um usuário

Respostas:

170

Existem três maneiras básicas de criar um projeto - as versões modernas do IntelliJ podem importar o projeto sbt imediatamente, caso contrário, você pode usar o plugin sbt para gerar o projeto IntelliJ ou usar o plugin IntelliJ Scala para criar o projeto sbt. Os recursos básicos funcionam de maneira imediata usando as duas soluções; algumas compilações complexas podem ter problemas; portanto, tente outras ferramentas para ver se funciona lá.

IntelliJ

IntelliJ IDEA tornou-se muito melhor nos dias de hoje. A versão atual (14.0.2) suporta projetos sbt prontos para uso com o plug-in Scala. Basta instalar o plug-in e você poderá abrir os projetos Scala / sbt sem problemas.

Plug-in Scala em Plugins em Preferências

Com o plug-in, basta apontar para um projeto sbt e o IDEA oferecerá um assistente para abrir esse tipo de projeto.

Importar projeto sbt

IntelliJ Scala Plugin

O plugin IntelliJ pode ser encontrado aqui http://confluence.jetbrains.com/display/SCA/Scala+Plugin+for+IntelliJ+IDEA ou pode ser instalado diretamente no IDE usando a caixa de diálogo Configurações -> Plugins. Depois, pode-se apenas fazer Arquivo -> Novo Projeto -> Scala -> SBT. O IntelliJ irá gerar o build.sbt básico, baixar as dependências necessárias e abrir o projeto.

SBT Plugin

O plug-in Sbt que gera um projeto de ideia com base 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")ao seu build.sbt; não são necessários resolvedores adicionais.

Versões mais antigas:

SBT 0.11+

Crie e adicione as seguintes linhas ao ~/.sbt/plugins/build.sbtORPROJECT_DIR/project/plugins.sbt

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0")

Use gen-ideano sbt para criar arquivos de projeto do IDEA.

Por padrão, os classificadores (ou seja, fontes e javadocs) das dependências sbt e library são carregados se encontrados e as referências adicionadas aos arquivos de projeto do IDEA. Se você não quiser download / referência deles, comando uso gen-idea no-classifiers no-sbt-classifiers.


SBT 0.10.1 (de acordo com o autor do plug-in, a 0.10.0 não funcionará!)

Crie e adicione as seguintes linhas ao ~ / .sbt / plugins / build.sbt:

resolvers += "sbt-idea-repo" at "http://mpeltonen.github.com/maven/"

libraryDependencies += "com.github.mpeltonen" %% "sbt-idea" % "0.10.0"

Use a gen-ideatarefa sbt para criar arquivos de projeto do IDEA.

Por padrão, os classificadores (ou seja, fontes e javadocs) das dependências sbt e library são carregados se encontrados e as referências adicionadas aos arquivos de projeto do IDEA. Se você não quiser download / referência deles, comando uso gen-idea no-classifiers no-sbt-classifiers.


SBT 0,7

Para usá-lo, basta executar isso a partir do seu shell sbt, ele usará o plugin 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 desejar:

import sbt._
class MyProject(info: ProjectInfo) extends ParentProject(info) with IdeaProject {
  lazy val mySubProject = project("my-subproject", "my-subproject", new DefaultProject(_) with IdeaProject)
   // ...
}
Steve Gury
fonte
4
Eu sou um total convertido a este plugin. Use-o em combinação com o idea-sbt-plugin, que permite delegar a criação do seu projeto ao SBT e use o SBT interativamente a partir de uma janela de ferramenta no IDEA. A versão 0.2.0-SNAPSHOT do sbt-idea corrige alguns pequenos aborrecimentos - criação de um projeto pai e preservação da configuração manual do IntelliJ.
retronym
Obrigado por este plugin. É realmente helfpul!
ksemeks
4
Retiro minha resposta. Este é um ótimo plugin e agora eu o uso sempre.
Synesso
1
Eu adicionei uma resposta para o SBT 0.10.0, que é completamente diferente do SBT 0.7.x + stackoverflow.com/questions/4250318/…
opyate
Obrigado opyate, eu atualizei minha postagem de acordo com o seu comentário
Steve Gury
11

Por enquanto eu faço isso manualmente. É bem simples

  1. Crie o projeto com o SBT
  2. Crie um novo projeto IDEA com o mesmo caminho raiz
  3. Crie um módulo com o mesmo caminho raiz
  4. Defina src / main / scala como um caminho src no módulo
  5. Defina src / test / scala como um caminho de teste no módulo
  6. Adicione scala-library.jar como uma biblioteca
  7. Adicione lib (se houver) como um diretório jar dentro de uma biblioteca de módulos
  8. Inclua lib_managed / compile (se houver) como um diretório jar em uma biblioteca de módulos
  9. Inclua lib_managed / test (se houver) como um diretório jar em 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 new-school, ou seja, versões 0.10 e mais recentes, porque não copia dependências para lib_managed por padrão. Você pode adicionar

retrieveManaged := true

para o seu build.sbt para copiar as dependências para lib_managed.

Synesso
fonte
Mas, você inicia seu projeto (cais) do IntelliJ ou de um terminal? Não consigo configurar o iniciador / compilador de projeto a partir do IDE.
ksemeks
Só mais uma coisa: eu fiz tudo o que você escreveu, mas IntelliJ está dizendo "Não é possível resolver o ne símbolo" para a importação "net.liftweb.LiftRules importação"
ksemeks
Consegui contornar a importação. Eu tinha que importar / lib_managed / compilação em vez de / lib_managed
ksemeks
6
Resposta retirada! Use o plugin sbt-idea.
Synesso
7

Tempus fugit e IntelliJ IDEA tornaram-se muito melhores atualmente. Afinal, é 2015, não é?

Dito isto, a versão mais recente do IntelliJ IDEA 14.0.2 suporta projetos sbt prontos para uso com o plug-in Scala . Basta instalar o plug-in e você poderá abrir projetos Scala / sbt sem muitos problemas.

Plug-in Scala em Plugins em Preferências

Estou usando a versão de acesso antecipado do plugin, que é 1.2.67.6.EAP no momento da redação.

Com o plug-in, aponte para um projeto sbt e o IDEA oferecerá um assistente para abrir esse tipo de projeto.

Importar projeto sbt

Sobre a sbt-idea no sbt 0.12.4

Para sbt 0.12.4, o arquivo de configuração do plugin em todo o sistema - ~/.sbt/plugins/build.sbtou 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")

Execute sbt gen-ideapara gerar arquivos de projeto do IDEA.

Leia o site do plug-in sbt-idea para obter informações mais atualizadas. Você também pode achar minha entrada no blog Importando projetos baseados em sbt para o IntelliJ IDEA 13 (com sbt-idea, Scala 2.11 e sbt 0.12) útil.

Jacek Laskowski
fonte
Ao criar um novo projeto. Após sbt gen-idea, o projeto está vazio. Nenhuma estrutura, não src, pasta de teste. E é coxo ..
ses
Como você criou o projeto? Qual é a estrutura de diretórios e os arquivos contidos?
Jacek Laskowski
Está apenas vazio. Eu tive que criar "main / scala / src" manualmente. Mas eu posso viver com isso.
ses
Você pode usar o github.com/n8han/giter8 como um meio de inicializar um projeto sbt. O sbt pode ter um diretório vazio, pois o projeto principal e principal / scala / src não são necessários - basta colocar seus arquivos Scala no diretório principal para o sbt selecioná-los.
Jacek Laskowski
5

For sbt 0.7

Veja a resposta em outro lugar nesta página .

For sbt 0.10

Clone e crie a ideia sbt 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 de plugin sbt se você ainda não o tiver

mkdir -p  ~/.sbt/plugins/lib

Copie o jar incorporado na etapa um para aqui

cp sbt-idea/target/scala-2.8.1.final/*.jar ~/.sbt/plugins/lib

Reinicie ou recarregue o sbt, então você pode executar gen-idea(ou gen-idea with-classifiersse desejar fontes e javadoc no intelliJ também)

Fonte: sugestão de Tackers no grupo de mensagens .

No próprio IntelliJ IDEA 13.x

Atualmente, você pode abrir um projeto baseado em SBT no IDEA. 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.

opiar
fonte
2

Eu apenas passei por toda essa dor. Passei dias tentando criar um ambiente aceitável e cheguei à conclusão de que ENSIME, SBT e JRebel serão o meu ambiente de desenvolvimento por algum tempo. Sim, ele está voltando ao Emacs, mas o ENSIME o transforma em um pouco ou uma idéia com refatoração, suporte a 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, é o melhor que temos.

Até que os ambientes de desenvolvimento Scala atinjam (Eclipse ou IntelliJ), não vou incomodar. Eles são muito buggy.

Veja a discussão no site do elevador.

http://groups.google.com/group/liftweb/browse_thread/thread/6e38ae7396575052#

Dentro desse segmento, há um link para um HOWTO para IntelliJ, mas, embora funcione, existem muitos problemas que o tornam um pouco menos útil.

http://blog.morroni.com/2010/07/14/setup-intellij-9-for-lift-framework-development/comment-page-1/

andyczerwonka
fonte
Eu já li. Este artigo usa o maven, que eu consegui trabalhar. Estou tentando fazer o mesmo agora, apenas com sbt, sem maven.
ksemeks
Posso configurar o projeto para o IntelliJ usá-lo, mas não consigo trabalhar com o compilador / iniciador sbt.
ksemeks
No que diz respeito à ENSIME: é fácil começar a trabalhar? Eu tentei uma vez, mas nunca trabalhei com o emacs, por isso foi um pouco difícil para mim. trabalhar com o emacs é uma premissa?
ksemeks
O link a seguir o guiará pela configuração do SBT. Isso funcionou para mim, mas trabalhar novamente com o SBT e o IntelliJ de maneira não integrada é como usar duas ferramentas separadas, o que o ENSIME with SBT é muito mais natural. heikoseeberger.blogspot.com/2010/08/…
andyczerwonka
2

As respostas são antigas para 2014. No IntelliJ 13.x , o plugin Scala é a versão 0.41.2 (o SBT está incluído).

Minha 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 .idea e .idea_modules .

Em IntelliJ, Arquivo> Abrir> selecione o projeto. Deve abrir o projeto sem nenhum problema.

Raymond Chenon
fonte