|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
Come usare Apache Ant
Buonasera a tutti.
Devo portare a termine un progetto universitario, scritto in Java accompagnato da Eclipse. Nella traccia del progetto, c'è scritto di presentare "il file di build (targets obbligatori: compile, makedb, javadoc, run) per Apache Ant per compilare il progetto, eseguire i test, lanciare il server e i client, creare il database, creare la documentazione javadoc, etc". Ora, visto che è la prima volta che sento parlare di Apache Ant, mi trovo spaesato. L'ho configurato correttamente, ma non avendo idea da dove iniziare, ho provat a seguire questo tutorial, che però mi dà qualche problema. C'è qualcuno in grado di linkarmi qualche guida o spiegarmi le cose indispensabili per compilare il progetto? Grazie in anticipo
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Che errori ti da?
Prova a postare il tuo build.xml e gli errori. Dall'esercizio sembra che te lo devi scrivere a mano, ho capito bene?
__________________
In God we trust; all others bring data |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
L'unico riferimento al file di ant nella traccia è quello copiato, quindi direi decisamente di si
Ho provato per ora solo sul demo di vogella, prima di cimentarmi sul nostro Venendo agli errori. Questo il primo ![]() Ho quindi pensato di creare manualmente la cartella src. Ho generato poi la javadoc del demo (mi ero dimenticato di farlo), ma i problemi non son finiti ![]() Grazie per l'aiuto EDIT: la riga 33 è Quote:
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro Ultima modifica di Krusty93 : 25-11-2014 alle 00:06. |
|
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Dai, non sei messo male.
Quote:
Quote:
includeantruntime="false" dovrebbe essere a posto. Se puoi, pubblica il build.xml cosi' ci diamo un'occhiata. Comunque vai alla grande, magari cambia le directory e non usare quelle dell'uccellino
__________________
In God we trust; all others bring data |
||
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
Il file di build utilizzato è identico a quello del sample di vogella
Ed è questo Codice:
<?xml version="1.0"?>
<project name="Ant-Test" default="main" basedir=".">
<!-- Sets variables which can later be used. -->
<!-- The value of a property is accessed via ${} -->
<property name="src.dir" location="src" />
<property name="build.dir" location="bin" />
<property name="dist.dir" location="dist" />
<property name="docs.dir" location="docs" />
<!-- Deletes the existing build, docs and dist directory-->
<target name="clean">
<delete dir="${build.dir}" />
<delete dir="${docs.dir}" />
<delete dir="${dist.dir}" />
</target>
<!-- Creates the build, docs and dist directory-->
<target name="makedir">
<mkdir dir="${build.dir}" />
<mkdir dir="${docs.dir}" />
<mkdir dir="${dist.dir}" />
</target>
<!-- Compiles the java code (including the usage of library for JUnit -->
<target name="compile" depends="clean, makedir">
<javac srcdir="${src.dir}" destdir="${build.dir}">
</javac>
</target>
<!-- Creates Javadoc -->
<target name="docs" depends="compile">
<javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
<!-- Define which files / directory should get included, we include all -->
<fileset dir="${src.dir}">
<include name="**" />
</fileset>
</javadoc>
</target>
<!--Creates the deployable jar file -->
<target name="jar" depends="compile">
<jar destfile="${dist.dir}\de.vogella.build.test.ant.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="test.Main" />
</manifest>
</jar>
</target>
<target name="main" depends="compile, jar, docs">
<description>Main target</description>
</target>
</project>
Infatti mi chiedevo cosa bisogna adattare al proprio progetto nel file xml
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
Ho aggiunto il nodo indicato da te ed inserito i sorgenti .java nella cartella src (de.vogella.build.ant.first\src\test\src).
Questi gli errori
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Lui definisce le directory in alcune variabili (come se fossero variabili d'ambiente in uno script): Codice:
<property name="src.dir" location="src" /> <property name="build.dir" location="bin" /> <property name="dist.dir" location="dist" /> <property name="docs.dir" location="docs" /> In bin ci vanno a finire i .class e dist conterra' la tua distribuzione. Naturalmente docs conterra' la documentazione javadoc. Se questa organizzazione delle directory ti va bene, non cambiare nulla. Quando dalla linea di comando scrivi: ant (senza nessun parametro), il target di default viene controllato. Qual e' il target di default? Questo: Codice:
<project name="Ant-Test" default="main" basedir="."> Ok, salti al target "main": Codice:
<target name="main" depends="compile, jar, docs">
<description>Main target</description>
</target>
L'unica cosa che devi cambiare e' Codice:
<target name="jar" depends="compile">
<jar destfile="${dist.dir}\de.vogella.build.test.ant.jar" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="test.Main" />
</manifest>
</jar>
</target>
Magari chiamalo Hello.jar, basta cambiare li'. BTW - puoi anche aggiungere attributi al manifest, in quel punto. Main-class definisce la classe che dovra' essere eseguita quando l'utente fa doppio click sul .jar (o quando impartisce il comando java -jar <nome file>.jar)
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" > probabilmente lo devi fare anche nel nodo di javadoc. Per il resto... ehi! Sono errori di Java, devi correggere la tua applicazione, ant non c'entra!
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
Quote:
). I problemi dovrebbero derivare da come sono organizzati i file all'interno delle cartelle. Di questo me ne occupo io.Grazie per la dritta, domani mi studio con calma ciò che mi hai scritto e provo a scrivere il file build.xml direttamente nel progetto universitario. A domani
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Veramente non trova la classe MyMath... l'hai messa nel posto giusto?
__________________
In God we trust; all others bring data |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
Ciao!
Allora, ho fatto progressi, utilizzando il mio progetto e abbandonando il demo. Il file di build è questo La struttura del progetto è questa L'intoppo si ha alla riga 70, alla creazione del target "run" per il client e il server. Parlando di Server Il percorso fisico è: D:\EclipseWorkspace\RMIServer\bin\com\server per i file compilati e D:\EclipseWorkspace\RMIServer\src\com\server per i sorgenti. L'errore è "Could not find or load main class Server". Mi sono accorto poi che se provo ad avviare il main della classe Server (contiene solo il main che instanzia il server vero e proprio) da cmd, mi da lo stesso errore. Nel Path di sistema è gia presente il percorso fino a jdkXXX\bin. L'output del run di build.xml è questo ![]() Per il Client discorso a parte. Nel main della classe ClientSignIn (con GUI) viene chiamato un metodo della classe Connection per stabilire la connessione. Quindi probabilmente è un errore mettere nel file di build Connection anziché ClientSignIn. Tuttavia non mi son posto il problema visto che voglio prima risolvere con il server, che ha una struttura più semplice Grazie
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro |
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Ad ogni modo: immagino, visto che sotto src hai creato la directory com, che tu abbia raggruppato le tue classi in un package, per esempio com.sottovento. Non conosco esattamente il nome del tuo package, ma se hai creato la directory com, allora deve PER FORZA cominciare cosi'. Se non e' il tuo caso, devi rimuovere questa directory e mettere quella giusta. Per verificare, prova cosi': supponendo che la classe Server sia nel package com.sottovento, dovra' esserci necessariamente la directory sottovento all'interno della directory com. La directory sottovento conterra' poi il file Server.class. Se sei in queste condizioni, apri cmd e spostati nella cartella bin; dopo di che scrivi: java com.sottovento.Server Ho dettagliato tutti i passaggi, chiedo scusa se sei un utente esperto e la cosa ti sembra triviale. L'errore comunque dice che non ha trovato la classe Server... Una volta che questo funziona, puoi cambiare ant in accordo
__________________
In God we trust; all others bring data Ultima modifica di sottovento : 25-11-2014 alle 20:24. |
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Milano
Messaggi: 8789
|
AIuto prezioso il tuo.
Ho difatti provato a spostarmi nella cartella bin, e poi scrivere java com.server.Server e non ha dato più l'errore di prima. Precedentemente mi spostavo direttamente nella cartella server e da li chiamavo direttamente java Server. La struttura te l'ho mandata nel post precedente, da li puoi vedere tutte le parti che ci interessano Ti rimetto il link: https://dl.dropboxusercontent.com/u/...48/Capture.PNG Tuttavia, non avvia il tutto in quanto non trova l'interfaccia IRemoteRmi che non si trova né nello stesso package, né nello stesso progetto (se guardi lo screen precedente lo trovi in Models/src/com.interf). In Eclipse tutti i vari progetti comunicano attraverso una reference: per Ant come dovrei fare?
__________________
Windows 11 Pro - Asus Prime X299-A - i7 7820X- GTX970 - Corsair Vengeance LPX 16GB - Samsung 850 Evo 500GB - OCZ Vertex 3 120GB - Cooler Master Nepton 240M - Phanteks Eclipse P400S - Dell U3821DW - Logitech G602 - Logitech G110 - Logitech G920 - iPhone 16 Pro Ultima modifica di Krusty93 : 25-11-2014 alle 21:43. |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Se cosi' fosse, potresti risolvere la cosa creando un nuovo nodo in build.xml che va a copiare i .jar che ti interessano, e che poi devi mettere nel tuo path. Ora sono al lavoro, posso dedicarti solo pochi minuti. Ti metto qui un file ant che ho scritto per fare la stessa cosa su un mio progetto, spero ti possa servire per riferimento. Potrai notare che vado ad aggiungere le librerie jar al path, copiare i file, creare il .jar finale: Codice:
<project name="ConfTag" default="dist" basedir=".">
<description>
LogTools - Tag configuration application
</description>
<property name="radix" location="." />
<property name="distPath" value="com/sottovento/conftag" />
<property name="package" value="conftag" />
<property name="src" location="${radix}/source/${distPath}" />
<property name="build" location="${radix}/build/${distPath}" />
<property name="dist" location="${radix}/package_out" />
<property name="lib" location="${radix}/lib" />
<property name="docs" location="${radix}/docs" />
<property name="chk" location="${radix}/chk/${distPath}" />
<property name="conffiles" location="${radix}/config/confTag" />
<!-- Preparing classpath to reach JCLASS libraries, remote spy libraries and Application libraries -->
<path id="project.class.path">
<pathelement path="${src}" />
<fileset dir="${lib}">
<include name="**/*.jar" />
</fileset>
</path>
<!-- First target, initialising -->
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the directory structure used by compile -->
<delete dir="${radix}/build" />
<mkdir dir="${build}" />
</target>
<!-- Compiling targets -->
<target name="compile" depends="init" description="Compile all the sources" >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${radix}/build">
<classpath refid="project.class.path" />
</javac>
</target>
<!-- Copying the config files in distribution directory. Additional files are required for setup, configuration, ... -->
<target name="copy" description="Copy configuration files into distribution directory" >
<mkdir dir="${dist}/${package}/config" />
<sync todir="${dist}/${package}" >
<fileset dir="${conffiles}" />
</sync>
</target>
<!-- Copy the libraries to distribution directory -->
<target name="copylib" description="Copy the needed libraries into distribution directory" >
<sync todir="${dist}/lib" >
<fileset dir="${lib}" />
</sync>
</target>
<!-- Preparing manifest file -->
<target name="manifest" depends="compile" description="Prepare manifest file" >
<mkdir dir="${build}/META-INF" />
<manifest file="${build}/META-INF/MANIFEST.MF">
<attribute name="Built-By" value="sottovento" />
<attribute name="Company" value="xxxxxxxxxx AG EAI2 Office"/>
<attribute name="Content" value="Tag configuration application"/>
<attribute name="Main-Class" value="com.sottovento.conftag.ConfTag" />
<attribute name="Class-Path" value=" ../lib/liquidlnf.jar" />
</manifest>
</target>
<!-- Preparing distribution -->
<target name="dist" depends="compile, copy, manifest, copylib" description="Code distribution preparation" >
<!-- Create distribution directory -->
<mkdir dir="${dist}/${package}" />
<!-- Put everything in ${build} into the level2.jar file -->
<jar destfile="${dist}/${package}/conftag.jar"
basedir="${radix}/build" manifest="${build}/META-INF/MANIFEST.MF" >
<include name="**" />
<exclude name="META-INF/**" />
<exclude name="/build.xml" />
</jar>
<!--
<sync todir="${dist}/${package}/lib" >
<fileset dir="${dist}/lib" />
</sync>
-->
</target>
<!-- Target for cleanup build directories -->
<target name="clean" description="Clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}" />
<delete dir="${dist}/${package}" />
<delete dir="${build}/META-INF" />
</target>
<!-- Target for javadoc generation -->
<target name="doc" description="Generate Javadoc documentation" >
<mkdir dir="${docs}/${distPath}" />
<javadoc packagenames="com.sottovento.conftag.*"
sourcepath="${src}"
classpathref="project.class.path"
destdir="${docs}/${distPath}"
author="true"
version="true"
use="true"
private="true"
windowtitle="Conftag API documentation" />
</target>
</project>
__________________
In God we trust; all others bring data |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:30.














). I problemi dovrebbero derivare da come sono organizzati i file all'interno delle cartelle. Di questo me ne occupo io.








