Avatar billede cvpcvp Nybegynder
04. august 2004 - 14:24 Der er 14 kommentarer og
1 løsning

Ant incrementering af kode i java fil

Jeg har en lille kodestump... f.eks.

class test
{
    int a;
   
    System.out.println(a);
}

eller moget i den stil....

Er det muligt at få ANT til at bestemme værdien af a?

Jeg kunne godt tænke mig at lave en løkke i ant hvor f.eks.
ant første gang kører koden og sætter a = 1
ant skal derefter kører koden igen og incrementere a... o.s.v.

Er det noget der kan lade sig gøre?
Avatar billede arne_v Ekspert
04. august 2004 - 14:43 #1
Lidt usædvaneligt, men det kan gøres.

<java classname="..." ...>
    <jvmarg value="-Da=123">
</java>

og så i koden:

int a = Integer.parseInt(System.getProperty("a"));
Avatar billede cvpcvp Nybegynder
04. august 2004 - 14:46 #2
kan du evt. skrive et lille eksempel på hvordan man laver det i en løkke i ant?

Lige en anden ting... kan noget tilsvarende lade sig gøre i c? jeg skal gerne poste et nyt spørgsmål i c kategorien hvis det er nemmere...
Avatar billede arne_v Ekspert
04. august 2004 - 14:51 #3
De fleste (alle ?) C compilere understøtter en tilsvarende feature:

gcc -Da=123 ...

Jeg ved ikke om du bruger ant, make eller script til din C build.
Avatar billede arne_v Ekspert
04. august 2004 - 14:52 #4
Jeg er noget skeptisk overfor den loop i ant.

Lyder som om du skal lave et custom task.

Kan du ikke bare lave løkken i et program fremfor i ant ?
Avatar billede cvpcvp Nybegynder
04. august 2004 - 14:53 #5
jeg bruger også ant til min c build
Avatar billede cvpcvp Nybegynder
04. august 2004 - 14:55 #6
nej... det skal være i ant, da koden først skal compileres med a = 1 og køre, og derefter compileres med a = 2 og køre o.s.v.
Avatar billede cvpcvp Nybegynder
04. august 2004 - 14:59 #7
mit mål er at jeg gerne vil have ant til først at kopilere min kode... så skal den eksekvere kode med a = 1, derefter kopilere koden på ny og køre den a = 2
Avatar billede arne_v Ekspert
04. august 2004 - 15:02 #8
Det er nemt at gøre i C, fordi -D i C er på compileren, men det er svært at
gøre i Java, fordi -D er runtime.

Hvis det absolut skal compiles tror jeg at du bliver nødt til at manipulere
Java koden med en lille utility.
Avatar billede cvpcvp Nybegynder
04. august 2004 - 15:03 #9
det er egenlig fint hvis jeg bare kan gøre det i C....
Avatar billede arne_v Ekspert
04. august 2004 - 15:06 #10
Så skriver du din C kode som:

int a = A;

og kalde C compileren (fra ant exec tag formoder jeg) med -DA=1 eller -DA=2
etc. så bliver koden compilet med 1 og 2 der hvor der står A i koden.
Avatar billede cvpcvp Nybegynder
04. august 2004 - 15:08 #11
jeg er ikke så hård til ANT... det skulle vel ikke være sådan at du kunne skrive en lille stump kode hvad der skal stå i den ANT fil...

Håber ikke jeg er til for meget besvær :-)
Avatar billede arne_v Ekspert
04. august 2004 - 15:14 #12
Noget a la:

<exec executable="gcc">
    <arg line=" -DA=1 foobar.c -o foobar.exe"/>
</exec>
<exec executable="foobar"/>
<exec executable="gcc">
    <arg line=" -DA=2 foobar.c -o foobar.exe"/>
</exec>
<exec executable="foobar"/>
<exec executable="gcc">
    <arg line=" -DA=3 foobar.c -o foobar.exe"/>
</exec>
<exec executable="foobar"/>
Avatar billede cvpcvp Nybegynder
04. august 2004 - 15:17 #13
jeg siger mange gange tak for hjælpen... så bliver det en god dag i dag alligvel :-)
Hvis du lige ligger et svar så du kan få dine hårdtjente point....
Avatar billede arne_v Ekspert
04. august 2004 - 15:21 #14
ok

men du skal vel lige se det virke først
Avatar billede cvpcvp Nybegynder
04. august 2004 - 15:22 #15
har jeg lige prøvet... det virker fint...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester