Quick update:
This configuration seems to work fine in eclipse without any explicit
path defined:
...
<executable>${java.home}/bin/javac</executable>
I will add a property to define the surefire plugin, and use the above
variable for now unless you can think of a better approach.
- Jeff
On 4/23/24 09:28, Jeffery Painter wrote:
Hi Turbine devs,
I have a couple down cycles and I have been looking at using the
latest Turbine 6.0 release. I was working to update the archetype to
generate a new project and I have run into a couple issues maybe you
can give some insight. I still use Eclipse as my IDE, so these may be
specific issues I am seeing there.
Note, if I run mvn install in a new project from the CLI everything
seems OK, but getting Eclipse -> Maven install to work was throwing
some errors.
Setup:
Environment: Ubuntu 22.0, Eclipse 2024-03, maven 3.9.6, JDK 17.0.10
(LTS) from Oracle
mvn --version
Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae)
Maven home: /usr/java/maven
Java version: 17.0.10, vendor: Oracle Corporation, runtime:
/usr/java/jdk-17.0.10
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "6.5.0-27-generic", arch: "amd64", family:
"unix"
Minor changes to the archetype in progress:
+++ b/src/main/resources/archetype-resources/pom.xml
<driverClassName>${turbine_database_driver}</driverClassName>
- <fulcrum.json>2.0.2-SNAPSHOT</fulcrum.json>
- <fulcrum.intake>3.0.1-SNAPSHOT</fulcrum.intake>
- <fulcrum.security>2.1.1-SNAPSHOT</fulcrum.security>
- <fulcrum.yaafi>2.0.1-SNAPSHOT</fulcrum.yaafi>
+ <fulcrum.intake>3.0.0</fulcrum.intake>
+ <fulcrum.parser>3.0.0</fulcrum.parser>
+ <fulcrum.security>3.0.0</fulcrum.security>
+ <fulcrum.yaafi>2.0.0</fulcrum.yaafi>
+ <fulcrum.json>2.0.1</fulcrum.json>
<fulcrum.cache>2.0.0</fulcrum.cache>
<fulcrum.testcontainer>2.0.0</fulcrum.testcontainer>
- <torque.version>5.2-SNAPSHOT</torque.version>
- <turbine.core>5.2-SNAPSHOT</turbine.core>
+ <torque.version>5.1</torque.version>
+ <turbine.core>6.0</turbine.core>
<skipTests>true</skipTests>
<docker>false</docker>
<turbine_database_url>${turbine_database_url}</turbine_database_url>
painter@merlin:~/apache/t/turbine-archetypes$ git diff
src/main/resources/META-INF/maven/archetype-metadata.xml
diff --git a/src/main/resources/META-INF/maven/archetype-metadata.xml
b/src/main/resources/META-INF/maven/archetype-metadata.xml
index 0158c60..9809418 100644
--- a/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -21,7 +21,7 @@
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0
http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd"
- name="turbine-5.1-webapp">
+ name="turbine-6.0-webapp">
<requiredProperties>
<requiredProperty key="turbine_app_name">
I can install the archetype locally, build a sample app from CLI and
no issues. I try to import the new app into Eclipse, run maven install
and get 2 errors.
The first is it complains is on the maven compiler plugin:
[[1;34mINFO[m]
[1m------------------------------------------------------------------------[m
[[1;31mERROR[m] Failed to execute goal
[32morg.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile[m[1m(default-compile)[mon
project [36mfirstapp[m: [1;31mFatal error compiling[m: Error while
executing the external compiler. Error while executing process. Cannot
run program "${JAVA_HOME}/bin/javac" (in directory
"/home/painter/workspace/firstapp"): error=2, No such file or
directory -> [1m[Help 1][m
[[1;31mERROR[m]
I can overcome this error if I explicitly point to the JDK install by
making the following change to the pom.xml
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${maven.compile.source}</source>
<target>${maven.compile.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<fork>true</fork>
<executable>/usr/java/jdk/bin/javac</executable>
</configuration>
</plugin>
The second error I get is then related to the surefire plugin:
[[1;31mERROR[m] Failed to execute goal
[32morg.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5:test[m[1m(default-test)[mon
project [36mfirstapp[m: [1;31mGiven path to java executor does not
exist "/home/painter/workspace/firstapp/${JAVA_HOME}/bin/java".[m->
[1m[Help 1][m
I can overcome this error if I explicitly update the pom.xml to use
version 3.2.5
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
<configuration>
<skipTests>${skipTests}</skipTests>
<reuseForks>false</reuseForks>
<forkCount>1</forkCount>
</configuration>
</plugin>
Then everything will build fine. Also, I see if I have Tomcat 9.0.x
configured as my server it will launch from Eclipse OK, but it fails
with Tomcat 10 or 11. Is this expected?
Any ideas on why it works from CLI mvn and not the Eclipse mvn
environment? I think specifiying the surefire version is an easy
change to make, but I am less certain on setting the default JDK in
the pom file (maybe we could pick this up in the archetype somehow?)
Happy to hear your thoughts!
-
Jeff