Pular para o conteúdo principal

Começando em Scala - Parte 2: Integração entre Maven e Scala

Na semana passada publiquei um post falando dos passos para começar o desenvolvimento em Scala. Também mencionei que uma alternativa a fazer o download do Scala do site oficial era configurá-lo via Maven. Hoje vou escrever mais sobre isso.

Para utilizar o Scala via Maven é necessário utilizar um plugin denominado scala-maven-plugin. Há também um plugin mais antigo denominado maven-scala-plugin, mas foi substituido pela versão mais nova que iremos abordar. Vou apresentar os itens de configuração do pom.xml necessários para utilizar Scala

A dependência com a versão desejada de Scala deve ser configurada no projeto:


    org.scala-lang
    scala-library
    2.9.2

O plugin deve ser configurado:


    net.alchim31.maven
    scala-maven-plugin
    3.1.0
    
        
            
                compile
                testCompile
            
            
    

O código fonte Scala deve ser escrito dentro do diretório src/main/scala e o código de testes dentro de src/test/scala. Com isso já é possivel fazer o build de projetos normalmente utilizando o Maven.

Caso seja desejado executar o interpretador REPL basta executar mvn scala:console

Projetos mistos Java/Scala

A configuração apresentada até agora é suficiente para projetos puros Scala e mistos de Java e Scala onde as classes de Scala utilizam as classes de Java. A compilação das classes Java ocorre antes da compilação das classe Scala. Caso seja necessário para as classes Java utilizarem as classes Scala é necessário efetuar uma configuração diferente no plugin.


    net.alchim31.maven
    scala-maven-plugin
    3.1.0
    
        
            scala-compile-first
            process-resources
            
                add-source
                compile
            
        
        
            scala-test-compile
            process-test-resources
            
                testCompile
            
        
    

E para finalizar um exemplo de classe Java e Scala colaborando num projeto Maven de acordo com a configuração apresentada. Lembrando que a classe Java está localizada no diretório src/main/java e a classe Scala em src/main/scala.

OlaMundo.java
package br.com.globalcode.java;

import br.com.globalcode.scalamavenproject.App;

public class OlaMundo {
        
    public static void main(String[] args) {
        System.out.println(App.olaMundo());
    }
}
App.scala
package br.com.globalcode.scalamavenproject

object App {
  def olaMundo():String = { "Ola Mundo do Scala" }
}
OBS:A declaração do método olaMundo em Scala poderia ser simplificada, omitindo o tipo de retorno, os parênteses e chaves, mas por enquanto está ótimo assim!

Com isso temos toda a base necessária para começar a utilizar o Scala em projetos reais Java, escrevendo os testes em Scala. No próximo post irei falar sobre a escrita de testes em Scala.

Outras referências:

Comentários

Postagens mais visitadas deste blog

10 reasons why we love JSF

1. One-slide technology: it's so simple that I can explain basic JSF with one slide. 2. Easy to extend: components, listeners, render kit, Events, Controller, etc. 3. Real-world adoption: JBoss, Exadel, Oracle, IBM, ... 4. Architecture model: you can choose between more than 100 different architecture. 5. Open-mind community: using JSF you are going to meet very interesting people. 6. We are using JSF the last 5 years and we found very good market for JSF in Brazil 7. Progress: look to JSf 1.1 to JSF 1.2, JSF 1.2 to JSF 2.0. People are working really hard! 8. Many professionals now available 9. It's a standard. It's JCP. Before complain, report and help! 10. Ed Burns, spec leader, is an old Globalcode community friend! EXTRA: My wife is specialist in JSF. She's my F1 for JSF :) Nice job JSF community! -Vinicius Senger

EJB 3: Uma evolução sob os conceitos do Hibernate e Spring

Definitivamente o modelo de componentização definido no Java EE 5 e 6 evoluiu e melhorou muito. Mas, sem dúvida muita dessa evolução se deve às pressões do Hibernate e Spring Framework. Estes dois últimos frameworks nasceram baseados no conceito de POJO, que nada mais é do que a concepção de um modelo de componentização baseado em classes Java sem as regras impostas pelo EJB (curioso, sem o EJB não existiria o Hibernate ou o Spring). A morte dos Entity Beans O Hibernate nasceu da idéia de promover um modelo de persistência mais simples que o proposto pelos EJBs do tipo Entity Beans definido na especificação EJB 2.x. Este foi o primeiro tipo de EJB a sofrer com a evasão de desenvolvedores com o surgimento deste framework e a conscientização sobre os problemas nos Entity Beans. A partir de um modelo baseado em JavaBeans e o uso do JDBC, o Hibernate usa a Reflection API para gerar os SQLs necessários para persistir o estado de beans em diversos banco de dados relacionais, além de defini...

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad...

JavaOne Brasil, dicas para submissão de palestras

Não quero parecer pretensiosa dando dicas para submissão de palestras para o JavaOne Brasil, mas sim repassar os tantos conselhos e sugestões recebidas pelos vetaranos do JavaOne: Bruno Souza e Leonardo Galvão que revisaram dezenas de submissões para o JavaOne e ajudaram a aprovar tantas palestras, e também misturar um pouco da minha experiência na seleção de palestras nos eventos realizados pela Globalcode e SouJava . 10 anos de JavaOne: http://www.globalcode.com.br/noticias/Globalcode10AnosNoJavaOne Os palestrantes ganham a entrada! A submissão pode ser feita em português! O passo mais importante para ser aprovado como palestrante no JavaOne é sem dúvida nenhuma submeter pelo menos uma palestra. Então, independente de qualquer coisa, participe, arrisque, divulgue.  Mas, se quiser aumentar as suas chances...   1) Leve a sério: peça para amigos fazerem uma leitura crítica do texto, e claro uma boa revisão ortográfica. 2) Submissão de várias palestras ou variações do ...

Parceria Globalcode no projeto Samsung Ocean

Já faz algum tempo que a Globalcode e a Samsung tem uma parceria no projeto "Samsung Ocean". Esse é um projeto muito interessante com o objetivo de divulgar e difundir o uso de tecnologia, principalmente associado a dispositivos móveis como celulares e relógios inteligentes (smart watches). No projeto são oferecidos diversos treinamentos e workshops gratuitos . Alguns dos treinamentos oferecidos são: Desenvolvimento de aplicações Android Desenvolvimento de aplicações para wearable Tópicos em desenvolvimento ágil Introdução aos jogos digitais Para a maioria dos cursos, o material e instrutores são fornecidos pela Globalcode. Atualmente nosso grupo de instrutores do projeto conta com excelentes profissionais como: Thiago Moreira Heider Lopes Luis Palma Taynã Bonaldo Thais Andrade O centro de treinamentos está localizado na Escola Politécnica da USP e atualmente estão abertas as inscrições para um dos programas mais bacanas do projeto. É o programa de pré-a...

Tendências: NoSQL

Muitos de nós já fomos testemunhas e presenciamos tendências tecnológicas virem com intensidade e se dispersarem tão rapidamente como surgiram. Há alguns anos acompanho a popularização e a adesão de padrões de infraestruras e plataformas para suportar aplicações web. A decisão de usar uma ou outra solução é com freqüência respaldada por casos de sucessos. Notadamente é considerável o peso dado ao que a start-up de sucesso do momento está utilizando. Tais decisões levam a uma reação em cadeia que direciona o mercado de desenvolvimento de software de uma maneira bem significativa. Uns dos mais populares stacks de hoje tem uma abreviação peculiar: LAMP. Esta combinação de letras são, na verdade, atalhos para os mais famosos projetos open source que se tem conhecimento: Linux, Apache (servidor HTTP) e MySQL. A última letra desta seqüência merece um destaque pela sua ambigüidade pois pode simbolizar a inicial de uma entre as mais populares linguagens script ( Python , PHP e Perl )....