Descripción

Maven

Estructura de un proyecto Maven:

Estructura del pom.xml

En mvnrepository.com puedes buscar las dependencias que usará tu proyecto.

Gradle

La connfiguración está escrita en JSON

Estructura de un proyecto Gradle:

Creación de una aplicación Maven con Hibernate, Java y Struts 2

  1. Creamos un nuevo proyecto maven.
    • mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.pablomonteserin -DartifactId=nombreAplicacion
    • Por otra parte, Eclipse tiene integrada la opción de crear un nuevo proyecto Maven. Para usar Gradle, sin embargo, habría que instalarle un plugin.

      Para crear un nuevo proyecto con Maven en Eclipse, usaremos new -> Maven Project ->

      • maven-archetype-quickstart (para un proyecto JSE)
      • maven-archetype-web-app (para un proyecto JEE)
  2. Modificamos el pom.xml (project object model) de este proyecto poniendo el siguiente código, válido para un proyecto con Hibernate y Struts 2
    <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>com.pablomonteserin</groupId>
    	<artifactId>futbol2</artifactId>
    	<packaging>war</packaging>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>futbol2 Maven Webapp</name>
    	<url>http://maven.apache.org</url>
    	<dependencies>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>3.8.1</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>2.4</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>jsp-api</artifactId>
    			<version>2.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.struts</groupId>
    			<artifactId>struts2-core</artifactId>
    			<version>2.5.16</version>
    		</dependency>
    		<dependency>
    			<groupId>org.hibernate</groupId>
    			<artifactId>hibernate-core</artifactId>
    			<version>5.3.0.Final</version>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>6.0.4</version>
    		</dependency>
    		<dependency>
        		<groupId>javax.xml.bind</groupId>
    			<artifactId>jaxb-api</artifactId>
    			<version>2.2.11</version>
    		</dependency>
    		<dependency>
    			<groupId>com.sun.xml.bind</groupId>
    			<artifactId>jaxb-core</artifactId>
    			<version>2.2.11</version>
    		</dependency>
    		<dependency>
    			<groupId>com.sun.xml.bind</groupId>
    			<artifactId>jaxb-impl</artifactId>
    			<version>2.2.11</version>
    		</dependency>
    		<dependency>
    			<groupId>javax.activation</groupId>
    			<artifactId>activation</artifactId>
    			<version>1.1.1</version>
    		</dependency>
    	</dependencies>
    	<build>
    		<finalName>futbol2</finalName>
    	</build>
    </project>

Pasos específicos para Java

Estos pasos serán previos al proceso de instalación indicado en el siguiente punto.

Descargar ejemplo
  1. Para poder ejecutar aplicaciones de Java en Heroku, habrá que vincularles el plugin webapp runner (https://devcenter.heroku.com/articles/java-webapp-runner)

    pom.xml<build>
        ...
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.0.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>copy</goal></goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.github.jsimone</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <version>8.5.31.0</version>
                                    <destFileName>webapp-runner.jar</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    La versión del webapp runner está vinculada a la versión de Apache Tomcat; es decir, la versión 8.5.23.0 de webapp runner usa la versión 8.5.23.0 de Apache Tomcat.

  2. Debemos asignar dynos a nuestro proyecto, para ello creamos un fichero Procfile en la raíz de nuestro proyecto con el siguiente código
    Procfileweb: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
  1. pom.xml<plugins>
    	<plugin>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-maven-plugin</artifactId>
    	</plugin>
    	<plugin>
    		<groupId>org.apache.maven.plugins</groupId>
    		<artifactId>maven-compiler-plugin</artifactId>
    		<version>3.5.1</version>
    		<configuration>
    			<source>${java.version}</source>
    			<target>${java.version}</target>
    		</configuration>
    	</plugin>
    	<plugin>
    		<groupId>com.heroku.sdk</groupId>
    		<artifactId>heroku-maven-plugin</artifactId>
    		<version>1.1.3</version>
    		<configuration>
    			<appName>futbol-spring</appName>
    			<processTypes>
    				
    				<web>java $JAVA_OPTS -Dserver.port=$PORT -jar target/Futbol-0.0.1-SNAPSHOT.war</web>
    			</processTypes>
    		</configuration>
    	</plugin>
    </plugins>
  2. Nota para linux:Para hacer el deploy de la aplicación, es necesario que la variable de entorno HEROKU_API_KEY esté en el entorno de la consola. Pero, si ejecutamos el comando del siguiente punto como administradores, probablemente no esté, ya que en linux esta variable está para el usuario, no para el administrador. Para seterla en linux para el adminitrador:
    heroku auth:token
    Una vez tenemos el Token, añadimos la variable de entorno al administador:
    /etc/enviromentexport HEROKU_API_KEY=********-****-****-****-************
    
  3. Directorio raíz del proyectomvn clean heroku:deploy

Instalación de un proyecto en Heroku

  1. Nos logueamos en https://heroku.com
  2. Entramos en el escritorio (https://dashboard.heroku.com/apps).
  3. New -> Create new app
  4. Le asignamos un nombre -> Create app
  5. En Deployment method escogeremos Heroku GIT.
  6. Si no tuviesemos Heroku CLI instalado, lo instalado.
  7. Ejecutamos:
    heroku login
  8. Sincronizamos nuestro proyecto local con el remoto. Podemos hacerlo de dos formas:
    heroku git:clone -a termineto
  9. Para subir los cambios:
    git add .
    git commit -am "make it better"
    git push heroku master
  10. Tras hacer el push se nos indica en la consola la url donde se ejecutará la app. Ejemplo: https://app-futbol.herokuapp.com/
  11. Si al ejecutar la aplicación hay algún error, podemos verlo en los logs : Dashborard -> More -> View Logs.

Creación de la base de datos en Heroku

  1. Menú hamburguesa -> Elements
  2. Selecciono ClearDB MySQL
  3. Install ClearDB MySQL
  4. Selecciono el proyecto al que quiero añadir la base de datos
  5. Pulsamos sobre Provision add-on (necesitaremos tener configurada una tarjeta bancaria)
  6. Debemos esperar unos minutos a que la base de datos sea creada, o cuando nos intentemos conectar a ella nos dará un error de conexión.
  7. Ejecutando el la carpeta de nuestro proyecto el comando
    heroku config
    Podremos ver los datos de conexión a la base de datos. Usaremos estos datos en el workbench. Por ejemplo, para esta url:
    mysql://be45deb9852070:798cb3e2@eu-cdbr-west-02.cleardb.net/heroku_83c786ff2b6e84d?reconnect=true
    

    Usuario: be45deb9852070
    Pass: 798cb3e2
    host: eu-cdbr-west-02.cleardb.net
    Nombre Base de datos: heroku_83c786ff2b6e84d

Ver la las trazas

heroku logs --tail

Aquí veremos los logs de los errores y los console.log escritos (si estamos ejecutando nodejs).

Debemos fijarnos sobre todo en la parte alta de las trazas.

Lanzar el proyecto

heroku open

Instalación de un proyecto HTML y CSS o PHP en Heroku

  1. Clonamos el siguiente proyecto:
    git clone https://github.com/heroku/php-getting-started.git
  2. Pegamos nuestro código HTMl / CSS / Javascript / PHP en la carpeta web y lo subimos al servidor de Heroku.

Vincular heroku a dominio

  1. Ejecutamos el siguiente comando desde la terminal para apuntar el dominio que hemos contratado a nuestra aplicación de heroku
    heroku domains:add www.amor2.cat
  2. A continuación añadiremos el dominio en crudo
    heroku domains:add www.amor2.cat
    . Es importante que sigamos este orden.
  3. Para saber si www.amor2.cat es un alias de mi aplicación de heroku, usaremos
    host www.amor2.cat
    . Cuando dejemos de obtener el mensaje "Host www.amor2.cat not found: 2(SERVFAIL)" será que los cambios se han propagado.
  4. Comprobamos el registro CNAME asociado. Para obtener información de los dominios y saber que dns's debemos pegar, usaremos el comando:
    heroku domains
  5. Vamos al proveedor de dominio -> Dominios -> Zonas DNS -> Añadimos un registro CNAME cname
icono de mandar un mailPreguntame lo que quieras!
Pablo Monteserín
contacta conmigoPablo Monteserín

El servicio de resolución de dudas técnicas es sólo para los usuarios premium. Si tienes cualquier otra duda, usa el formulario de contacto. ¡Gracias!