exec-maven-plugin хочет передать maven.dependency.classpath в качестве переменной в моей цели EXEC - PullRequest
0 голосов
/ 19 августа 2011
I want to define property or want to use maven.plugin.classpath and maven.dependency.classpath in my build.xml.

How can i do it ?

Sample code is as below...

<property> </property> is not working and not able to read the values from my build.xml so please explain me how can i do it ?


            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <id>install</id>
                        <phase>install</phase>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <property name="plugin_classpath" refid="maven.plugin.classpath" />
                    <property name="maven_dependency_classpath" refid="maven.dependency.classpath" />               
                    <executable>antscript.bat</executable> <!-- ant -f build.xml build -->
                </configuration>
            </plugin>



Hi Sean Patrick Floyd,


Yes i tried using maven-antrun-plugin but i am not able to setup JDK 1.4.2 version in it. I am trying to specify all possible way to apply JDK version 1.4.2 but it's still taking tools.jar or JDK version, Which maven.bat file is using (jdk 1.5)

I was using following code in MAVEN-ANTRUN-PLUGIN as below code.

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.6</version>

                <executions>
                    <execution>
                        <id>install</id>
                        <phase>install</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <source>${java-version}</source>
                            <target>${java-version}</target>
                            <compilerVersion>${java-version}</compilerVersion>
                            <executable>${java.1.4.2.home}/bin/javac</executable>
                             <target>

                                <property name="plugin_classpath" refid="maven.plugin.classpath" />
                                <property name="maven_dependency_classpath" refid="maven.dependency.classpath" />
                                <ant antfile="ant_build.xml" />
                             </target>
                      </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>sun.jdk</groupId>
                        <artifactId>tools</artifactId>
                        <version>1.4.2</version>
                        <scope>system</scope>
                        <systemPath>${java.1.4.2.home}/lib/tools.jar</systemPath>
                    </dependency>
                    <dependency>
                        <groupId>com.sun</groupId>
                        <artifactId>rt</artifactId>
                        <version>${java-version}</version>
                        <scope>system</scope>
                        <systemPath>${java.1.4.2.home}/jre/lib/rt.jar</systemPath>
                    </dependency>
                </dependencies>
            </plugin>



That's why i choose exec GOAL where my SYSTEM JAVA_HOME is 1.4.2 and it's able to execute it if i have all dependencies which i needed.


Please help me out.






Thanks.

Ответы [ 2 ]

1 голос
/ 19 августа 2011

maven.plugin.classpath и т. Д. - переменные, определенные только в maven-antrun-plugin . Плагин exec не знает об этих значениях. Кроме того, было бы невозможно сделать это в первую очередь, так как вы вызываете внешний файл .bat и, следовательно, запускаете новый процесс.

На вашем месте я бы использовал плагин antrun. Подробнее см. на странице использования .


Обновление: хорошо, теперь я вижу вашу проблему. Нет, вы не можете использовать другой JDK, так как antrun работает в одном и том же vm. Так что либо вам нужно переключить JDK maven, либо вам действительно нужно использовать exec-maven-plugin. В последнем случае вам придется использовать
dependency:build-classpath -DoutputFile=someFile.txt
и на стороне муравья прочитайте содержимое someFile.txt как свойство и создайте из него путь к классам. Или вы можете использовать %classpath переменную метку-заполнитель в аргументах командной строки.

0 голосов
/ 22 августа 2011

Да, правильный ответ, который я нашел, это использовать версию MAVEN, которая поддерживает JDK 1.4.2. Поэтому я должен использовать apache-maven-2.0.11, который поддерживает JDK 1.4.2

Спасибо всем за ваши ответы.

...