Это очень «не путь maven», чтобы создавать зависимости от внешних инструментов построения вне экосистемы maven. Связывание с tclsh приведет к поломке ваших сборок, если tclsh недоступен.Не говорю, что я не сделал хуже (иногда вам просто нужно сделать это и забыть «путь на пути»). К счастью, есть альтернатива - jacl.
Сначала загрузите последний (возможно, 1.4.1) предварительно созданный двоичный файл zac-файла jacl от sourceforge.
Далее распакуйте и зайдите в подкаталог lib/tcljava1.4.1. Есть четыре фляга файлов здесь вам нужно опубликовать в локальное хранилище (или другой репо вы используете):
mvn install:install-file -Dfile=tjc.jar -DgroupId=jacl -DartifactId=tjc -Dversion=1.4.1 -Dpackaging=jar
mvn install:install-file -Dfile=tcljava.jar -DgroupId=jacl -DartifactId=tcljava -Dversion=1.4.1 -Dpackaging=jar
mvn install:install-file -Dfile=jacl.jar -DgroupId=jacl -DartifactId=jacl -Dversion=1.4.1 -Dpackaging=jar
mvn install:install-file -Dfile=itcl.jar -DgroupId=jacl -DartifactId=itcl -Dversion=1.4.1 -Dpackaging=jar
Вам также необходимы добавить их в зависимости к проекту, где вы призывающий сценарий TCL :
<dependency>
<groupId>jacl</groupId>
<artifactId>itcl</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>jacl</groupId>
<artifactId>jacl</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>jacl</groupId>
<artifactId>tcljava</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>jacl</groupId>
<artifactId>tjc</artifactId>
<version>1.4.1</version>
</dependency>
Тогда просто вызовите Tcl (или действительно JACL) скрипт с использованием EXEC цели ехес-Maven-плагин, передавая путь к файлу сценария в качестве первого аргумента (настроить выполнение по мере необходимости связывание с надлежащей фазой и т. д.):
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>runTcl</id>
<phase>process-resources</phase>
<goals><goal>exec</goal></goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Dbasedir=${basedir}</argument>
<argument>-classpath</argument>
<classpath/>
<argument>tcl.lang.Shell</argument>
<argument>${basedir}/src/main/scripts/myScript.tcl</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
Обновление: обратите внимание, что я должен был использовать цель «exec» выше, чем цель java. Это потому, что jacl вызывает System.exit() в своей основной функции, поэтому он убивает jvm. С помощью этой конфигурации, вы можете провалить сборку с помощью:
package require java
java::call System exit 1
из вашего TCL кода (или любое значение выхода, кроме нуля или других successCodes настроенных в плагине). Надеюсь, это поможет.
Возможно, вы можете найти ответы на этот вопрос (https://eclipse.googlesource.com/dltk/org.eclipse.dltk.tcl/+/master/tcl/tests/), поскольку, как представляется, Тесты TCL в проекте maven? – t0mppa
Это интересно! Но я не вижу никакого кода в TCL, просто на Java. Поправьте меня, если я это вижу неправильно. – FILIaS
Вещи под '[...] core.tests/rawtests' в структуре папок, по-видимому, являются TCL. Поэтому, даже если это исходный код для инструментария Dynamic Language Toolkit для Eclipse, может быть что-то есть. Тем не менее, я ничего не знаю о TCL, поэтому не верьте мне на слово. Просто вскочил на меня, когда я быстро просмотрел Google для этой темы и подумал, что упомянул об этом, поскольку вы сказали, что не нашли ничего полезного. – t0mppa