Como criar um projeto java SWT com Maven

Bom, esta foi a primeira vez que fui tentar criar um projeto java para descktop, então na hora de procurar saber como fazer isto me deparei com duas possibilidade, swing e SWT, apos ler um pouco sobre pros e contras eu escolhi experimentar o SWT.

Prós SWT:
- utiliza elementos nativos, quando possível, de modo que o comportamento sempre nativa
- suportado pelo eclipse
- grande número de exemplos, tem uma ponte AWT / SWT integrada para permitir o uso de componentes AWT e Swing
Contras SWT:
- requer bibliotecas nativas para cada sistema suportado
- podem não suportar todos os comportamentos em todos os sistemas por causa de recursos nativos utilizados (opções dica)
- gestão dos recursos nativos muitas vezes podem ser eliminado ou registrado como ouvinte.
Origem

Usando Maven

Criar o projeto, não encontrei um plug-in especifico para criar um projeto SWT, entao vai um padrao mesmo.

 mvn archetype:generate -DgroupId=br.eng.eliseu.swt.olaMundo -DartifactId=OlaMundo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  


Este generate cria um projeto maven bem basico que voce vai ter que completar com algumas coisas mais, por exemplo.

pom.xml
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
      <modelVersion>4.0.0</modelVersion>  
      <groupId>br.eng.eliseu.swt.olaMundo</groupId>  
      <artifactId>OlaMundo</artifactId>  
      <packaging>jar</packaging>  
      <version>1.0-SNAPSHOT</version>  
      <name>OlaMundo</name>  
      <url>http://maven.apache.org</url>  
      <properties>  
           <swt.groupId>org.eclipse.swt</swt.groupId>  
           <swt.version>4.4</swt.version>  
           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
      </properties>  
      <profiles>  
           <profile>  
                <id>linux64</id>  
                <activation>  
                     <os>  
                          <!--use "mvn -version" para descobrir estes parametro -->  
                          <name>linux</name>  
                          <family>unix</family>  
                          <arch>amd64</arch>  
                          <version>3.11.10-17-desktop</version>  
                     </os>  
                </activation>  
                <properties>  
                     <swt.artifactId>org.eclipse.swt.gtk.linux.x86_64</swt.artifactId>  
                     <swt.finalName>olaMundo-linux-x86_64</swt.finalName>  
                </properties>  
           </profile>  
           <profile>  
                <id>win</id>  
                <activation>  
                     <os>  
                          <name>Windows 8.1</name>  
                          <family>dos</family>  
                          <arch>amd64</arch>  
                          <version>6.3</version>  
                     </os>  
                </activation>  
                <properties>  
                     <swt.artifactId>org.eclipse.swt.win32.win32.x86_64</swt.artifactId>  
                     <swt.finalName>olaMundo-win-64</swt.finalName>  
                </properties>  
           </profile>  
      </profiles>  
      <repositories>  
           <repository>  
                <id>swt-repo</id>  
                <url>https://swt-repo.googlecode.com/svn/repo/</url>  
           </repository>  
      </repositories>  
      <dependencies>  
           <dependency>  
                <groupId>junit</groupId>  
                <artifactId>junit</artifactId>  
                <version>3.8.1</version>  
                <scope>test</scope>  
           </dependency>  
           <dependency>  
                <groupId>${swt.groupId}</groupId>  
                <artifactId>${swt.artifactId}</artifactId>  
                <version>${swt.version}</version>  
           </dependency>  
           <dependency>  
                <groupId>org.eclipse.ui</groupId>  
                <artifactId>org.eclipse.ui.workbench</artifactId>  
                <version>3.7.1.v20120104-1859</version>  
           </dependency>  
      </dependencies>  
      <build>  
           <finalName>${swt.finalName}</finalName>  
           <plugins>  
                <plugin>  
                     <artifactId>maven-compiler-plugin</artifactId>  
                     <version>3.1</version>  
                     <configuration>  
                          <source>1.7</source>  
                          <target>1.7</target>  
                     </configuration>  
                </plugin>  
                <plugin>  
                     <groupId>org.apache.maven.plugins</groupId>  
                     <artifactId>maven-clean-plugin</artifactId>  
                     <version>2.5</version>  
                </plugin>  
                <plugin>  
                     <groupId>org.apache.maven.plugins</groupId>  
                     <artifactId>maven-shade-plugin</artifactId>  
                     <version>2.2</version>  
                     <executions>  
                          <execution>  
                               <phase>package</phase>  
                               <goals>  
                                    <goal>shade</goal>  
                               </goals>  
                               <configuration>  
                                    <transformers>  
                                         <transformer  
                                              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
                                              <manifestEntries>  
                                                   <Main-Class>${groupId}.App</Main-Class>  
                                              </manifestEntries>  
                                         </transformer>  
                                    </transformers>  
                                    <filters>  
                                         <filter>  
                                              <artifact>*:*</artifact>  
                                              <excludes>  
                                                   <exclude>META-INF/*.SF</exclude>  
                                                   <exclude>META-INF/*.DSA</exclude>  
                                                   <exclude>META-INF/*.RSA</exclude>  
                                                   <exclude>META-INF/*.inf</exclude>  
                                              </excludes>  
                                         </filter>  
                                    </filters>  
                               </configuration>  
                          </execution>  
                     </executions>  
                </plugin>  
 <!--   
                <plugin>  
                     <groupId>org.codehaus.mojo</groupId>  
                     <artifactId>exec-maven-plugin</artifactId>  
                     <version>1.1.1</version>  
                     <executions>  
                          <execution>  
                               <phase>test</phase>  
                               <goals>  
                                    <goal>java</goal>  
                               </goals>  
                               <configuration>  
                                    <mainClass>br.eng.eliseu.swt.olaMundo.App</mainClass>  
                               </configuration>  
                          </execution>  
                     </executions>  
                </plugin>  
  -->  
           </plugins>  
      </build>  
      <reporting>  
           <plugins>  
                <plugin>  
                     <groupId>org.codehaus.mojo</groupId>  
                     <artifactId>cobertura-maven-plugin</artifactId>  
                </plugin>  
                <plugin>  
                     <groupId>org.apache.maven.plugins</groupId>  
                     <artifactId>maven-surefire-report-plugin</artifactId>  
                     <version>2.7.1</version>  
                </plugin>  
           </plugins>  
      </reporting>  
 </project>  

Este pom pode substituir por completo o que foi gerado pelo generate. Claro que alguns parâmetros devem ser substituídos , como nome do projeto e versão do sistema operacional que você esta usando.

Feito isto, crie o projeto eclipse

 mvn eclipse:clean eclipse:eclipse  

Feito isto, faca:

 mvn clean intall  


Usando o profile voce pode especificar qual perfil vai ser usado, ex:

 mvn clean intall -P linux64 ( para usar o perfil linux64 )  
 mvn clean intall -P win ( para usar o perfil win )  


Quando nao informar -P o default é o perfil ue estiver em primeiro lugar no xml


Vai ser criado um jar dentro da pasta target, para executala, faca:

 java -jar olaMundo.jar  


"Hello World!" vai aparecer.. :)




Paginas que pode te auxiliar daqui para frente.. :)

http://www.eclipse.org/swt/
http://www.eclipse.org/swt/examples.php
http://www.java2s.com/Code/Java/SWT-JFace-Eclipse/CatalogSWT-JFace-Eclipse.htm
http://www.vogella.com/tutorials/EclipseJFaceTable/article.html


Nenhum comentário:

Postar um comentário