[java, ant, javac] как скомпилить юзая другую папку сурцов
можно конечно написать утилитку или даже найти готовую, которая будет вычищать из джарников unused classes ходя по графу импортов, но в общем случае решение не катит, ибо рефлекшен идет мимо импортов.
а откуда она узнает, какие классы пихать какие не пихать?ээ
а в чем проблема?
все .class которые получились из my_src пихать
все .class которые получились не из my_src не пихать
можно конечно написать утилитку или даже найти готовую, которая будет вычищать из джарников unused classes ходя по графу импортов, но в общем случае решение не катит, ибо рефлекшен идет мимо импортов.это не моя задача
мне никакой unused не надо
все .class которые получились не из src не пихатьТогда не понятно, откуда брать их в рантайме.
компилим всё в одну папку
потом компилим в другую папку только src юзая класспасом предыдущую компиляцию!
осталась одна загвоздка
как при компиляции всего указать "начальными" только файлы из src папки?
<javac>
<src path="my_src" />
<src path="global_src" />
<include ? />
</javac>
что вместо ? поставить?
вот так не работает:
<javac>
<src path="my_src" >
<include name="**/*">
</src>
<src path="global_src">
<exclude name="**/*">
</src>
</javac>
Тогда не понятно, откуда брать их в рантайме.а мне они тама не нужны
ну тойсть в данном случае эта задача не стоит
что вместо ? поставить?аееееееееее
получилось!
вот ответ на изначлаьный пост:
<javac destdir="tmp">
<src path="my_src" />
<sourcepath path="global_src" />
</javac>
<javac destdir="out">
<src path="my_src" />
<classpath>
<dirset dir="tmp"/>
</classpath>
</javac>
токо непонятно my_src зачем первый раз совать в компайл? разве глобал_срс от него зависит?
тогда понятнону я же в первом посте объяснил
токо непонятно my_src зачем первый раз совать в компайл? разве глобал_срс от него зависит?
смотри
джава компилятор "рюхает зависимости"
вот он начинает компилить файл, смотрит что там импортируется другой класс и начинает по всем указанным сурцам этот файл искать
находит и тоже компилит
global_src сам полностью мы не компилим, мы первым проходом компилим из него только те файлы которые импортируются в my_src
т.е. my_src в первый раз указывается чтобы это дерево зависимостей обработалось
global_src:
A.java - компилится
B.java - не компилится, там какой-то кривой код
my_src:
C.java (в файле есть import A;)
первым проходом мы получим
A.class
C.class
вторым проходом мы получим
C.class
если первым проходом my_src не указать
то первым проходом не получим ни одного класса, зато получим компайлер эррор: B.java содержит ошибки
В первом посте просто как то замылено что в global_src код с ашипками, я и понять не мог что за танцы с бубном
Можно еще попробовать failonerror=false. Возможно ant не остановит компиляцию остальных классов после ошибок компиляции.
Оставить комментарий
pitrik2
есть две папки сурцовglobal_src
my_src
global_srс целиком не компилится, перечислять все классы которые компилятся очень гиморно
my_src компилится вместе с global_src
т.е. например если <javac> указать два сурца, то он автоматом подцепит все нужные .java файлы из global_src
но проблема такая, что на выход попадают .class файлы из global_src
как этого избежать?