Net Beans 6.0 x Eclipse 3.0 Europa. Não é isso que vocês estão pensando

Fala gente boa!
Sei que uma das coisas que vocês mais encontram no fórum qual a melhor IDE.
Nossa isso ainda não encheu o saco, mais ta quase!
Bem, a java magazine desse mês teve uma matéria sobre isso. Tem umas informações legais lá.
To pedindo uma ajuda pro pessoal que conhece NET Beans, pois eu sou do Eclipse.
Acredito que IDE é uma coisa, alem de tudo, pessoal.
Então eu to querendo ficar fazendo algumas coisas que estou estudando no momento em Net Beans pra ver se eu gosto dele.
Mas meu principal problema é que o Net Beans cria um .jar pra você sem a pasta lib dentro desse .jar.
Isso pra mim é um saco porque sempre quando você vai executar sua aplicação em algum lugar tem que levar uma pasta lib pra lá também. Sem falar em casos que você distribui uma aplicação ai tem que ficar avisando e ensinando pra usuários que tem que pegar uma pasta, criar um diretório, e por ia vai…
No Eclipse tem o fat jar, que eu acho um ótimo plugin ele cria o .jar do seu projeto inteiro que você quiser. Isso é maior mão na roda. Alguém sabe como eu posso fazer algo no Net Beans 6.0?
(desculpe a enrolação só pra perguntar isso).

Olá,
isso em tese é simples de fazer, entretanto o NetBeans automaticamente cria as devidas entradas no MANIFEST para que os jars da pasta lib os quais façam parte do classpath do projeto também façam parte do classpath do seu jar.

Para ver como é fácil, insira o seguinte código no seu build.xml:

<target name="-post-jar">
   <jar update="true" destfile="${dist.jar}">
      <zipfileset src="${javac.classpath}"/>
   </jar>
</target>

Espero que isso ajude.

Grato meu amigo!

Quando eu coloco um .jar e compilo beleza ele coloca no .jar.

Mas quando eu coloco outro depois ele não faz update e coloca o segundo também.

Saberia se tem configuração pra xml pra isso também, pode colocar aí pra mim?

Valeu!

Seu problema é outro, de automação. Procure saber sobre Apache Ant. O NetBeans usa o Ant e você pode se beneficiar dele para modificar a seu propósito.

Abraços

djemacao, obrigado pela dica.
Eu até sabia que o NetBeans usava o Ant pra compilar, mas é que eu sou péssimo em xml. E pra configurar o build já viu né?
Agora que eu saquei, vou dar uma estudada pra aprender a fazer o que eu quero. Por mais mal acostumado que eu esteja de usar plugins. Bem que podia ter uma opção pra isso : (
Pelo visto eu já reparei uma coisa no Net Beans: é muito menos “configurável” que o eclipse.
Não dá pra fazer algumas coisas da forma, clique com o botão direito e escolha a terceira opção, abre um winzard e você vai configurando.
Mas beleza, valeu a força gente boa!

o Erro que aparece é o seguinte:

init:
deps-jar:
compile:
Copy libraries to C:\NetBeans 6.0\workspaceNetBeans-01.2008\JavaApplication11\dist\lib.
To run this application from the command line without Ant, try:
java -jar “C:\NetBeans 6.0\workspaceNetBeans-01.2008\JavaApplication11\dist\JavaApplication11.jar”
C:\NetBeans 6.0\workspaceNetBeans-01.2008\JavaApplication11\build.xml:10: the archive doesn’t exist
BUILD FAILED (total time: 0 seconds)

Este erro diz claramente que um arquivo que está sendo indicado no seu build não existe.

[]'s

Valeu gente!
Se alguém ainda tiver uma dica, meu build.xml ficou assim:
Quando eu tento incluir duas bíbliotecas( dois .jar no lib) eu recebo aquele erro.

<?xml version=“1.0” encoding=“UTF-8”?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<project name=“JavaApplication7” default=“default” basedir=".">
<description>Builds, tests, and runs the project JavaApplication7.</description>
<import file=“nbproject/build-impl.xml”/>

<target name="-post-jar">
<jar update=“true” destfile="${dist.jar}">
<zipfileset src="${javac.classpath}"/>
</jar>
</target>

&lt;!--

There exist several targets which are by default empty and which can be 
used for execution of your tasks. These targets are usually executed 
before and after some main targets. They are: 

  -pre-init:                 called before initialization of project properties
  -post-init:                called after initialization of project properties
  -pre-compile:              called before javac compilation
  -post-compile:             called after javac compilation
  -pre-compile-single:       called before javac compilation of single file
  -post-compile-single:      called after javac compilation of single file
  -pre-compile-test:         called before javac compilation of JUnit tests
  -post-compile-test:        called after javac compilation of JUnit tests
  -pre-compile-test-single:  called before javac compilation of single JUnit test
  -post-compile-test-single: called after javac compilation of single JUunit test
  -pre-jar:                  called before JAR building
  -post-jar:                 called after JAR building
  -post-clean:               called after cleaning build products

(Targets beginning with '-' are not intended to be called on their own.)

Example of inserting an obfuscator after compilation could look like this:

    &lt;target name="-post-compile"&gt;
        &lt;obfuscate&gt;
            &lt;fileset dir="${build.classes.dir}"/&gt;
        &lt;/obfuscate&gt;
    &lt;/target&gt;

For list of available properties check the imported 
nbproject/build-impl.xml file. 


Another way to customize the build is by overriding existing main targets.
The targets of interest are: 

  -init-macrodef-javac:     defines macro for javac compilation
  -init-macrodef-junit:     defines macro for junit execution
  -init-macrodef-debug:     defines macro for class debugging
  -init-macrodef-java:      defines macro for class execution
  -do-jar-with-manifest:    JAR building (if you are using a manifest)
  -do-jar-without-manifest: JAR building (if you are not using a manifest)
  run:                      execution of project 
  -javadoc-build:           Javadoc generation
  test-report:              JUnit report generation

An example of overriding the target for project execution could look like this:

    &lt;target name="run" depends="JavaApplication7-impl.jar"&gt;
        &lt;exec dir="bin" executable="launcher.exe"&gt;
            &lt;arg file="${dist.jar}"/&gt;
        &lt;/exec&gt;
    &lt;/target&gt;

Notice that the overridden target depends on the jar target and not only on 
the compile target as the regular run target does. Again, for a list of available 
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file. 

--&gt;

</project>

Olá,
este script irá copiar todas as libs as quais o projeto tem dependência. Isso não irá funcionar se você apenas incluir as bibliotecas na pasta lib, você terá de criar as devidas dependências no IDE, o qual irá atualizar corretamente a variável javac.classpath.
Entretanto vale ressaltar que o fat jar é um conceito que pode trazer vários efeitos colaterais para seu projeto… Caso você queira detalhes sobre isso, você pode procurar na lista do NetBeans, onde isso foi discutido vastamente nos últimos tempos.

[]'s

Gostaria de agradecer a todos que escreveram no tópico.
Principalmente o hmichel que colocou o código pra mim, e por suas opniões.
Só consegui resolver desse jeito:

<target name="-post-jar">
<jar update=“true” destfile=“dist/JavaApplication7.jar”>
<zipfileset src=“dist/lib/swingx-0.9.1.jar”/>
<zipfileset src=“dist/lib/looks-2.1.4.jar”/>
</jar>
</target>

Talvez consiga de um jeito melhor depois, mas por enquanto vou ficar com esse mesmo. Se ele não me causar nenhum problema.
Grato a todos, valeu gente boa!

Queria agradecer a todos que escreveram no tópico.
Principalmente ao hmichel por ter colocado o código pra mim, e pelas opniões.
Valeu!

Só consegui resolver desse jeito:

&lt;target name="-post-jar"&gt; 
     &lt;jar update="true" destfile="dist/JavaApplication7.jar"&gt; 
          &lt;zipfileset src="dist/lib/swingx-0.9.1.jar"/&gt; 
          &lt;zipfileset src="dist/lib/looks-2.1.4.jar"/&gt; 
     &lt;/jar&gt; 
&lt;/target&gt; 

Talvez consiga de um jeito melhor depois, mas por enquanto vou ficar com esse mesmo. Se ele não me causar nenhum problema.
Grato a todos, valeu gente boa!

Toda vez que você fizer um clean a pasta dist será removida, e será necessário copiar os jars novamente.

[]'s

Já vi que essa não é uma das melhores formas rsrs
Mas por enquanto vai assim mesmo.
Valeu!

Vc pode por as libs em um diretorio fora do “DIST” assim não precisa ficar copiando toda hora, eu faço assim.

*Sorry, não vi ke o tópico era de 2007, usei a pesquisa para tirar dúvidas e respondi um tópico sem querer. :shock:

[]'s