Eclipse JEE (Application)
Jump to navigation
Jump to search
Eclipse JEE
Install
# shared/opt install schema v1.5.6 #### as common user #### # define applications vars export SOFTWARE_PATH="/home/shared/opt/software" export NAME="eclipse-jee" export VERSION="2022-12" export URL="https://download.eclipse.org/technology/epp/downloads/release/${VERSION}/R/eclipse-jee-${VERSION}-R-linux-gtk-x86_64.tar.gz" su - -w SOFTWARE_PATH,NAME,VERSION #### as root #### # install packages and prepare destination path apt-get -q -y install wget coreutils findutils < /dev/null apt-get -q -y install wget tar gzip < /dev/null mkdir -m 777 "${SOFTWARE_PATH}/tmp_install/" "${SOFTWARE_PATH}/${NAME}_${VERSION}/" exit #### as common user #### umask 0027 cd "${SOFTWARE_PATH}/tmp_install" wget -c --no-check-certificate "${URL}" tar -xzf "eclipse-jee-${VERSION}-R-linux-gtk-x86_64.tar.gz" -C "${SOFTWARE_PATH}/${NAME}_${VERSION}/" cd su - -w SOFTWARE_PATH,NAME,VERSION #### as root #### # ensure permissions to destination path cd "${SOFTWARE_PATH}" chown -R root:users "${NAME}_${VERSION}" find "${NAME}_${VERSION}" -type d -exec chmod a-s,u+rwx,g+rx,g-w,o-rwx {} \; find "${NAME}_${VERSION}" -type f -exec chmod a-s,u+rw,g+r,g-w,o-rwx {} \; rm -rf tmp_install ln -s -f -T "${NAME}_${VERSION}" "${NAME}" exit #### as common user #### # test the application "${SOFTWARE_PATH}/${NAME}/eclipse/eclipse"
Maven manual eclipse project
Intro: final folder structure
PROJECT_NAME root eclipse/ src/ main/ java/ resources/ META-INF/ persistence.xml log4j.properties webapp/ WEB-INF/ mvc-dispatcher-servlet.xml web.xml index.jsp test/ java/ target/ pom.xml
Preparation
- Folder structure
mkdir PROJECT_NAME cd PROJECT_NAME mkdir -p src/main/java src/test/java eclipse target src/main/webapp/WEB-INF src/main/resources/META-INF/ touch pom.xml touch src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml touch src/main/webapp/WEB-INF/web.xml touch src/main/resources/log4j.properties touch src/main/resources/META-INF/persistence.xml touch src/main/webapp/index.jsp
- Initial src/main/webapp/index.jsp
<html> <body> <h2>Maven World!</h2> </body> </html>
- Initial src/main/webapp/WEB-INF/web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app>
- Final src/main/resources/log4j.properties
# Root logger option log4j.rootLogger = INFO, console, file # Direct log messages to console log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.appender.console.Threshold = WARN log4j.appender.console.Target = System.out log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = %-5p %d{yyyy-MM-dd HH:mm:ss} [%t][%F:%L] - %m%n # Direct log messages to a log file log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = log/log4j.log log4j.appender.file.MaxFileSize = 1MB log4j.appender.file.MaxBackupIndex = 3 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern = %-5p %d{yyyy-MM-dd HH:mm:ss} [%t][%F:%L] - %m%n
Maven
- This example use java 1.6, log4j, jpa/hsqldb, spring-webmvc, jackson
./pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.PROJECT_NAME</groupId> <artifactId>PROJECT_NAME</artifactId> <version>0.1</version> <packaging>war</packaging> <properties> <!-- Encoding --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- Java version to compile --> <java.version>1.6</java.version> <!-- Maven compiler --> <maven-compiler-plugin.version>3.1</maven-compiler-plugin.version> <!-- Spring --> <spring-core.version>4.0.2.RELEASE</spring-core.version> <spring-web.version>4.0.2.RELEASE</spring-web.version> <spring-webmvc.version>4.0.2.RELEASE</spring-webmvc.version> <spring-orm.version>4.0.2.RELEASE</spring-orm.version> <spring-tx.version>4.0.2.RELEASE</spring-tx.version> <spring-data-jpa.version>1.5.1.RELEASE</spring-data-jpa.version> <spring-test.version>4.0.2.RELEASE</spring-test.version> <!-- Jackson --> <jackson-mapper-asl.version>1.9.13</jackson-mapper-asl.version> <!-- Logging --> <log4j.version>1.2.17</log4j.version> <slf4j-simple.version>1.7.6</slf4j-simple.version> <!-- Database --> <hibernate-jpa-2.0-api.version>1.0.1.Final</hibernate-jpa-2.0-api.version> <hibernate-entitymanager.version>4.2.8.Final</hibernate-entitymanager.version> <hsqldb.version>2.3.2</hsqldb.version> <!-- JUnit --> <junit.version>4.11</junit.version> </properties> <build> <finalName>PROJECT_NAME</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler-plugin.version}</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring-core.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring-web.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring-webmvc.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring-orm.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-tx.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${spring-data-jpa.version}</version> </dependency> <!-- Jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jackson-mapper-asl.version}</version> </dependency> <!-- Logging --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>${slf4j-simple.version}</version> </dependency> <!-- Database --> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>${hibernate-jpa-2.0-api.version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate-entitymanager.version}</version> </dependency> <dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>${hsqldb.version}</version> </dependency> <!-- Optional testing --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring-test.version}</version> </dependency> </dependencies> </project>
TODO
- Discover how put pom.xml in a subdirectory like maven/pom.xml
<!-- example --> <build> <sourceDirectory>${project.basedir}/../src/main/java</sourceDirectory> <testSourceDirectory>${project.basedir}/../src/test/java</testSourceDirectory> <plugins> <plugin> <configuration> <webXml>${project.basedir}/../src/main/webapp/WEB-INF/web.xml</webXml> <warSourceDirectory>${project.basedir}/../src/main/webapp</warSourceDirectory>
Usage
mvn clean install mvn tomcat:run firefox http://localhost:8080/PROJECT_NAME/
Eclipse
- Open Eclipse J2EE (Eclipse Luna version tested here) and create a new Dynamic Web Project in this way:
# on menu, click on 'File' -> 'New' -> 'Other...' # select 'Web' -> 'Dynamic Web Project' and click 'Next ->' # 'Project name:' "PROJECT_NAME" # 'Location:' "PROJECT_PATH/eclipse" # click 'Finish' # on left panel, right click on 'PROJECT_NAME/Java Resources/src -> 'Delete' -> 'Ok' # on left panel, right click on 'PROJECT_NAME' and select 'New' -> 'Folder' # 'Folder name:' "src" # click on 'Advanced > >' # 'Link to alternate location': "../src/main/java" # click 'Finish' # on left panel, right click on 'PROJECT_NAME/src' and select 'Build Path' -> 'Use as Source Folder' # on left panel, right click on 'PROJECT_NAME' and select 'New' -> 'Folder' # 'Folder name:' "test" # click on 'Advanced > >' # 'Link to alternate location': "../src/test/java" # click 'Finish' # on left panel, right click on 'PROJECT_NAME/test' and select 'Build Path' -> 'Use as Source Folder' # on left panel, right click on 'PROJECT_NAME' and select 'New' -> 'Folder' # 'Folder name:' "resources" # click on 'Advanced > >' # 'Link to alternate location': "../src/main/resources" # click 'Finish' # on left panel, right click on 'PROJECT_NAME/resources' and select 'Build Path' -> 'Use as Source Folder' # on left panel, right click on 'PROJECT_NAME/WebContent -> 'Delete' -> 'Ok' # on left panel, right click on 'PROJECT_NAME' and select 'New' -> 'Folder' # 'Folder name:' "WebContent" # click on 'Advanced > >' # 'Link to alternate location': "../src/main/webapp" # click 'Finish' # on left panel, right click on 'PROJECT_NAME/WebContent/WEB-INF' and select 'New' -> 'Folder' # 'Folder name:' "lib" # click on 'Advanced > >' # 'Link to alternate location': "../target/PROJECT_NAME/WEB-INF/lib" # click 'Finish' # if needed, # on left panel, right click on 'PROJECT_NAME/Java Resources/Libraries/Web App Libraries' and select -> 'Build Path' -> 'Remove from Build Path' # on left panel, select all files under 'PROJECT_NAME/WebContent/WEB-INF/lib' and right click, select 'Build Path' -> 'Add to Build Path'
To organize
Noob tips to discover the Eclipse current working directory
- Sometime the location of this directory is not the expected
System.out.println("Current working directory:"); System.out.println(System.getProperty("user.dir"));
Kotlin
install kotlin plugin
from marketplace https://kotlinlang.org/docs/tutorials/getting-started-eclipse.html
import gradle project
in the process, change WORKSPACE gradle setting to use local gradle installation