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