Implemente el entorno de código fuente de kettle8.3 en idea

Tabla de contenido

Obtenga la versión especificada del código fuente del hervidor y configure su entorno de inicio

Errores encontrados durante el inicio

Importar complementos o complementos personalizados

prueba de omisión del tarro del paquete de ideas


Obtenga la versión especificada del código fuente del hervidor y configure su entorno de inicio

Es necesario extraer el código fuente del hervidor para configurar el entorno maven especificado (de lo contrario, muchas dependencias no se descargarán), el archivo de configuración específico se puede descargar del sitio web oficial (haga clic con el botón derecho y guarde como, y luego reemplace el archivo de configuración con el que acaba de guardado en la configuración de maven en el archivo de idea): https://raw.githubusercontent.com/pentaho/maven-parent-poms/master/maven-support-files/settings.xml

El contenido de este archivo es el siguiente, y lo siguiente se copia del enlace:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
 <localRepository>D:\repo</localRepository>  <!-- 这个是自己的maven本地仓库 -->
  <!-- This is the recommended settings.xml for development of Hitachi Vantara projects. -->

  <!--
  If your wish to mirror everything through pentaho-public's repo uncomment bellow. Not recommended
  for external developers.
  -->
  <!--
  <mirrors>
    <mirror>
      <id>pentaho-public</id>
      <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
  -->

  <!--
  Don't forget to add setting-security.xml so that the password get's decrypted  
  -->
  <servers>
    <server>
      <id>pentaho-public</id>
      <username>devreaduser</username>
      <password>{zIMyJWfHKfoHiBJAVsAgW4E5BcJzR+nhTtgPy0J+/rs=}</password>
    </server>
  </servers>

  <!--
  You might want to tweak the 'updatePolicy' configuration to fit your need on having updated snapshots and
  releases. Our recommendation is to set it to 'never' and run maven with the '-U' flag when needed.
  -->
  <profiles>
    <profile>
      <id>pentaho</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>pentaho-public</id>
          <name>Pentaho Public</name>
          <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>pentaho-public</id>
          <name>Pentaho Public</name>
          <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <!-- this lets you call plugins from these groups in their short form -->
  <pluginGroups>
    <pluginGroup>org.pentaho.maven.plugins</pluginGroup>
    <pluginGroup>com.pentaho.maven.plugins</pluginGroup>
    <pluginGroup>com.github.spotbugs</pluginGroup>
  </pluginGroups>
</settings>

Atención especial: cuando extraiga código de un almacén remoto, asegúrese de prestar atención a la versión de origen del extracción. Puede usar el método git de la línea de comando para completar la adquisición del código de almacén, de modo que pueda especificar la versión .

git clone -b 8.3 https://github.com/pentaho/pentaho-kettle.git

La velocidad de la red de este proceso de extracción es muy lenta. Incluso si la aceleración en el extranjero está activada, aún se atascará de vez en cuando. 18 minutos aquí ya se considera rápido. Es muy normal extraer y descargar durante horas.

 Los archivos compilados se encuentran en la siguiente ruta:

Nota: el informe de errores de todos puede ser diferente y tiene mucho que ver con las herramientas y los sistemas de edición.

Primero configure el programa en ejecución: en la Run/Debug Configurationsventana abierta [ ], realice los siguientes ajustes:

-Djava.ext.dirs="lib"

La configuración modificada del programa de la cuchara: (solo siga la modificación a continuación)

①Cree un nuevo directorio en el directorio del código fuente disty cree un nuevo subdirectorio lib en distel directorio

② Descomprima el directorio zipen el paquete de lanzamiento compilado anteriormente en el directorio ui en ui (la estructura de directorios de este dist se mostrará más adelante)ui<源码目录>\dist

③Copie los siguientes archivos en el directorio zipdel paquete de lanzamiento compilado previamente a:lib4jar<源码目录>\lib

dom4j-2.1.1.jar
jaxen-1.1.6.jar
slf4j-api-1.7.7.jar
slf4j-nop-1.7.7.jar

 El directorio dist es el siguiente:

 Una vez completada la configuración de modificación del proyecto, comience: la clase Spoon en kettle-ui-swt se está ejecutando e inevitablemente se informará un error:

Errores encontrados durante el inicio

Error 1: No se puede encontrar EventManager.class

1. Solución: cree esta clase en org.eclipse.core.commands.common.EventManager:

Luego copie el siguiente código en la clase EventManager que acaba de crear:

Preste atención al nombre del paquete almacenado en esta clase (también creado por usted mismo): 

package org.eclipse.core.commands.common;

// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
import org.eclipse.core.runtime.ListenerList;

public abstract class EventManager {
    private static final Object[] EMPTY_ARRAY = new Object[0];
    private transient ListenerList listenerList = null;

    public EventManager() {
    }

    protected final synchronized void addListenerObject(Object listener) {
        if (this.listenerList == null) {
            this.listenerList = new ListenerList(1);
        }

        this.listenerList.add(listener);
    }

    protected final synchronized void clearListeners() {
        if (this.listenerList != null) {
            this.listenerList.clear();
        }

    }

    protected final Object[] getListeners() {
        ListenerList list = this.listenerList;
        return list == null ? EMPTY_ARRAY : list.getListeners();
    }

    protected final boolean isListenerAttached() {
        return this.listenerList != null;
    }

    protected final synchronized void removeListenerObject(Object listener) {
        if (this.listenerList != null) {
            this.listenerList.remove(listener);
            if (this.listenerList.isEmpty()) {
                this.listenerList = null;
            }
        }

    }
}

 Continúe para iniciar y continúe informando errores: no se puede cargar la biblioteca: xxxxxxx\swt-gtk-4623.dll

 solución:

Abierto: <源码目录>\ui\pom.xml:

No comente el Linux global :

 Después del comentario en swt, el proyecto se volverá a cargar y el entorno del código fuente puede dañarse, por lo que debe actualizar maven manualmente para volver a descargar el código fuente zip :

 Luego busque el modelo en la estructura del proyecto, busque el módulo kettle-ui-swt y haga clic en este módulo, puede ver todas las dependencias de este módulo (como se muestra en la figura)

Nota: De hecho, si hace lo anterior, a veces puede mover directamente la estructura del proyecto o actualizar el proyecto maven , luego el orden de Windows y Linux puede restablecerse, por lo que debe configurarlo nuevamente en este momento. el orden de estas dos dependencias cuando continúa reportando este error.

Continuar ejecutándose, continuar informando errores: Error al iniciar el shell de cuchara java.lang.NoClassDefFoundError:org/jaxen/JaxenException

Por supuesto, no necesita comentar, luego debe encontrar el contenedor dependiente usted mismo y luego importar esta dependencia. La forma en que lo uso es para comentar este alcance.

Por supuesto, se pueden informar varias ClassNotFoundExceptions:

Si encuentra este error, verifique qué jarpaquete , libbusque el jarpaquete el zip después de que la compilación sea exitosa) y <源码目录>\dist\libcópielo.

Otros errores encontrados: Error: no se pudo encontrar o cargar la clase principal org.pentaho.di.ui.spoon.Spoon

Una solución encontrada en la web: 

De hecho, se resolvió de esta manera, pero seguí actualizando el maven y luego, de repente, comencé a descargar el paquete zip del código fuente y algunas otras cosas después de un tiempo, y luego este problema ya no apareció.

Continúe con la ejecución, la operación es exitosa y aparecerá la siguiente página:

Importar complementos o complementos personalizados

prestar atención:

Al configurar el entorno del código fuente de la manera anterior, el hervidor comenzó de esta manera no tiene complementos (los complementos aquí significan que los complementos en los complementos no están en el programa de inicio, y el complemento básico original- ins en el módulo del motor todavía estarán allí), si desea cargar el complemento en el programa, debe copiar el complemento (jar) en el paquete zip compilado a los complementos del dist (el jar se copia el paquete de estructura), de modo que el complemento y algunos complementos personalizados puedan surtir efecto.

 La siguiente es una demostración de la introducción del complemento s3-csv-input en el funcionamiento de hervidor: simplemente copie el archivo jar de este componente en los complementos en nuestro directorio dist.

Los complementos personalizados también se pueden empaquetar aquí para su uso y depuración.

Para la depuración de complementos personalizados, puede consultar mi otro blog: (1 mensaje) Depuración remota del entorno de código fuente y cliente de hervidor --- Depuración remota de proyectos java implementados (versión idea)_El futuro es muy brillante Largo, no te limites a mirar el blog que tienes delante-CSDN Blog

prueba de omisión del tarro del paquete de ideas

Agregue un pequeño truco: puede usar esta cosa cuando la prueba usted mismo. En proyectos reales, aún necesita pasar la prueba antes de que pueda empaquetarse.

La instalación en la idea omite el enlace de prueba:

Hay el siguiente ícono en la barra de herramientas de la barra de comandos de maven, seleccione prueba y luego haga clic en el símbolo del rayo;

Supongo que te gusta

Origin blog.csdn.net/weixin_53142722/article/details/127151221
Recomendado
Clasificación