我想创建一个能够执行Python代码的Eclipse插件。为此,我想使用Jython。另外,我使用Maven进行依赖,并希望使用Maven进行打包。
我的问题:(下面添加了解决方案) 我无法使用Maven构建使用Jython的eclipse插件。 Maven告诉“ BUILD SUCCESS”,但是Tycho和jython-compile-maven-plugin不能一起使用。 jython插件之所以起作用,是因为有两个jar作为输出,普通jar和提取了Jython的jar。 Tycho插件正在工作,因为普通的jar是有效的插件。但是需要提取Jython的jar并不是有效的插件。那么如何正确捆绑这两个插件?
问题:
由于Maven,第谷,吉顿,M2E对我来说是新的……:
如何重现该问题?
Eclipse Photon, Modeling + installed M2E: - Create new Plug-in Project name: ExampleMavenJythonEclipsePlugin, Version: 1.0.0.qualifier - [x] This plug-in will make contributions to the UI (and no RC Application) - [x] Create a plug-in using one of the templates - View contribution using 3.x API - View Class Name: SampleView - Convert Project to Maven Project - Replace POM with given given source - Run Maven "Update Project...", refresh workspace after - if there are pom errors like "Execution default-compile of goal org.eclipse.tycho:tycho-compiler-plugin [...]" do a change anywhere in pom and save (like insert newline, whitespace, tab, ...) - Replace SampleView Class with given source (don't delete your package) - Open plugin.xml, runtime, add classpath libs/jython-standalone.jar - right click pom, run as, maven build..., goals: clean package Testing: - Put the plugin to eclipse plugin dir, restart eclipse - window -> show view -> other - Sample Category, Sample View
另外: “以Eclipse应用程序身份运行”并不意味着它可以正常工作。 Iam正在使用Jython-Standalone。
修改1: 我取得了一些进展。我不正确地理解Tycho一开始的工作方式。 Tycho使用的是Manifest / build.properties,而不是pom依赖项。 POM不管理运行时依赖项,这就是为什么我需要将jython-standalone.jar添加到运行时。不需要jython-compile-maven-plugin。对于Jython而言,似乎最重要的是,如果在jar中,则带有Python代码的/ Lib文件夹位于根目录。有很多解决方案,我使用的是用eclipse创建的名为“ pythonExtracted”的源文件夹。现在,新的源文件夹应位于build.properties中。每个源文件夹都复制到jar的根目录中。 libs /中的jython-standalone.jar ist手动添加到类路径中。如果将“ python.home”设置为plugin.jar,则它看起来可以工作。但是我无法解析束和路径“。”指向eclipse.exe而不是jar,就像使用可运行的jar一样。
我不喜欢我现在拥有2倍使用相同代码的Lib文件夹。我试图将jython提取到lib / jython中并设置运行时类路径。尝试改变python主目录路径。如果插件打包为jar,则无济于事。看起来好像只能是/ lib放在罐子里。我尝试在libs中使用Jython(不是独立的),但从独立的库中提取了Lib文件夹,但是打包后无法解析PySystemState / PythonInterpreter。
解决方案:
- you need to add libs/jython to runtime classpath manually - you need to create a source folder named: pythonExtracted (or adjust pom.xml below) + working if eclipse plugin packed as jar + Maven Update Project prepares the project - python libs are twice in (extra ~10MB)
解决方案:Pom.xml(没有M2E配置)
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ExampleMavenJythonEclipsePlugin</groupId>
<artifactId>ExampleMavenJythonEclipsePlugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<eclipse-release-url>http://download.eclipse.org/releases/photon</eclipse-release-url>
<maven-tycho-version>1.2.0</maven-tycho-version>
<maven-dependency-plugin-version>3.1.1</maven-dependency-plugin-version>
<maven-compiler-plugin-version>3.8.0</maven-compiler-plugin-version>
</properties>
<repositories>
<repository>
<id>eclipse-release</id>
<layout>p2</layout>
<url>${eclipse-release-url}</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin-version}</version>
<executions>
<execution> <!-- JythonStandalone to /libs, strip version -->
<id>copyLibs</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<stripVersion>true</stripVersion>
<stripClassifier>true</stripClassifier>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<outputDirectory>${project.basedir}/libs</outputDirectory>
<artifactItems>
<artifactItem>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>unpackPythonLibsFromJython</id>
<phase>initialize</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>org.python</includeGroupIds>
<includeArtifactIds>jython-standalone</includeArtifactIds>
<includes>Lib/**/*</includes>
<outputDirectory>${project.basedir}/pythonExtracted</outputDirectory> <!-- has to be a source folder -->
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${maven-tycho-version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${maven-tycho-version}</version>
<configuration>
<pomDependencies>consider</pomDependencies>
<environments>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86</arch>
</environment>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
</build>
</project>
解决方案:Pom.xml(具有M2E配置)
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ExampleMavenJythonEclipsePlugin</groupId>
<artifactId>ExampleMavenJythonEclipsePlugin</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<eclipse-release-url>http://download.eclipse.org/releases/photon</eclipse-release-url>
<maven-tycho-version>1.2.0</maven-tycho-version>
<maven-dependency-plugin-version>3.1.1</maven-dependency-plugin-version>
<maven-compiler-plugin-version>3.8.0</maven-compiler-plugin-version>
</properties>
<repositories>
<repository>
<id>eclipse-release</id>
<layout>p2</layout>
<url>${eclipse-release-url}</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin-version}</version>
<executions>
<execution> <!-- JythonStandalone to /libs, strip version -->
<id>copyLibs</id>
<phase>process-sources</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<stripVersion>true</stripVersion>
<stripClassifier>true</stripClassifier>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<outputDirectory>${project.basedir}/libs</outputDirectory>
<artifactItems>
<artifactItem>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>unpackPythonLibsFromJython</id>
<phase>initialize</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>org.python</includeGroupIds>
<includeArtifactIds>jython-standalone</includeArtifactIds>
<includes>Lib/**/*</includes>
<outputDirectory>${project.basedir}/pythonExtracted</outputDirectory> <!-- has to be a source folder -->
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${maven-tycho-version}</version>
<extensions>true</extensions>
</plugin>
<!-- Enable the replacement of the SNAPSHOT version in the final product
configuration
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${maven-tycho-version}</version>
<executions>
<execution>
<phase>package</phase>
<id>package-feature</id>
<configuration>
<finalName>${project.artifactId}_${unqualifiedVersion}.${buildQualifier}</finalName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-repository-plugin</artifactId>
<version>${maven-tycho-version}</version>
<configuration>
<includeAllDependencies>true</includeAllDependencies>
</configuration>
</plugin>-->
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${maven-tycho-version}</version>
<configuration>
<pomDependencies>consider</pomDependencies>
<environments>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86</arch>
</environment>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>validate-version</goal>
<goal>validate-id</goal>
<goal>build-qualifier</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<versionRange>[1.0.0,)</versionRange>
<goals>
<goal>compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<versionRange>
[${maven-dependency-plugin-version},)
</versionRange>
<goals>
<goal>copy</goal>
<goal>unpack-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<execute>
<runOnIncremental>false</runOnIncremental>
</execute>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
解决方案:Activator.java(在plugin.xml中设置)
package examplemavenjythoneclipseplugin.views;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
public static Bundle bundle = null;
// The shared instance
private static Activator plugin;
/**
* The constructor
*/
public Activator() {
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
*/
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
if (bundle == null) {
bundle = context.getBundle();
}
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
}
解决方案:SampleView.java
package examplemavenjythoneclipseplugin.views;
import java.io.File;
import java.util.Properties;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.part.ViewPart;
import org.osgi.framework.Bundle;
import org.python.core.PySystemState;
import org.python.util.PythonInterpreter;
public class SampleView extends ViewPart {
private static void pythonTest(final String home) {
final Properties propsPre = System.getProperties();
final Properties propsPost = new Properties();
// suppress warning console encoding not set
propsPost.put("python.console.encoding", "UTF-8");
// if no Lib folder is found, constructor of PythonInterpreter fails, but this isn't useful
propsPost.put("python.import.site", "false");
// set python home path / cache dir for Jython (just package information)
propsPost.put("python.cachedir", new File(home, "cachedir").getAbsolutePath());
propsPost.put("python.home", new File(home).getAbsolutePath());
// used for our own "System.out" => we can read it later with ease
final java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
// needed only once in any application before any other Python/Jython code is used.
PySystemState.initialize(propsPre, propsPost, new String[0]);
try (final PythonInterpreter interpreter = new PythonInterpreter();) {
interpreter.setOut(new java.io.PrintStream(out));
interpreter.exec("print('Hello World')"); // checks if start is fine
interpreter.exec("print ' '");
interpreter.exec("print('importing sys'); import sys; print('done');"); // should work even if Lib not found
interpreter.exec("print 'prefix:', sys.prefix");
interpreter.exec("print ' '");
interpreter.exec("print 'System path:', sys.path");
interpreter.exec("print('importing os'); import os; print('done');"); // needs access to lib folder
interpreter.exec("print('Hello World')"); // if anything above fails, null is printed not Hello World
MessageDialog.openInformation(Display.getDefault().getActiveShell(), "Output:",
out.toString() + "\n" + (home));
} catch (Throwable t) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Jython failed",
out.toString() + "\n" + t.toString());
t.printStackTrace();
}
}
@Override
public void createPartControl(Composite parent) {
/* 1) Show Python home path
* 2) make Python home path changable
* 3) create button to start PythonInit & test
*/
// I have no clue why, getBundle failed in various situations, the plugin Activator gets the bundle better.
// final Bundle bundle = Platform.getBundle("ExampleMavenJythonEclipsePlugin"); // Argument = Manifest.Bundle-SymbolicName
final Bundle bundle = Activator.bundle; // start(BundleContext context) => context.getBundle()
// 1 & 2) Create input showing the home path used (fallback "." = not valid in this working version but is vor runnable jar)
parent.setLayout(new FormLayout());
final Text input = new Text(parent, SWT.SINGLE);
FormData d = new FormData();
d.top = new FormAttachment(parent, 0);
d.left = new FormAttachment(parent, 0);
d.right = new FormAttachment(100, 0);
input.setLayoutData(d);
try {
File b = FileLocator.getBundleFile(bundle);
input.setText(b.getAbsolutePath());
} catch (Throwable e) {
input.setText(".");
}
// 3) create button to start test
final Button button = new Button(parent, SWT.PUSH);
d = new FormData();
d.top = new FormAttachment(input, 5);
d.left = new FormAttachment(parent, 0);
d.right = new FormAttachment(100, 0);
button.setLayoutData(d);
button.setText("test");
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
pythonTest(input.getText());
}
});
}
@Override
public void setFocus() {
}
}
解决方案:Maven控制台“ mvn clean package”
[INFO] Scanning for projects... [INFO] Computing target platform for MavenProject: ExampleMavenJythonEclipsePlugin:ExampleMavenJythonEclipsePlugin:1.0.0-SNAPSHOT @ D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\pom.xml [INFO] Fetching p2.index from http://download.eclipse.org/releases/photon/ [INFO] Fetching p2.index from http://download.eclipse.org/releases/photon/ [INFO] Adding repository http://download.eclipse.org/releases/photon [INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/photon/ [INFO] Fetching p2.index from http://download.eclipse.org/technology/epp/packages/photon/ [INFO] Fetching p2.index from http://download.eclipse.org/releases/photon/201806271001/ [INFO] Fetching p2.index from http://download.eclipse.org/releases/photon/201806271001/ [INFO] Fetching content.xml.xz from http://download.eclipse.org/releases/photon/201806271001/ [INFO] Fetching content.xml.xz from http://download.eclipse.org/releases/photon/201806271001/ [INFO] Fetching content.xml.xz from http://download.eclipse.org/releases/photon/201806271001/ (248,94kB at 247,04kB/s) [INFO] Fetching content.xml.xz from http://download.eclipse.org/releases/photon/201806271001/ (701,55kB at 349,82kB/s) [INFO] Resolving dependencies of MavenProject: ExampleMavenJythonEclipsePlugin:ExampleMavenJythonEclipsePlugin:1.0.0-SNAPSHOT @ D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\pom.xml [INFO] Resolving class path of MavenProject: ExampleMavenJythonEclipsePlugin:ExampleMavenJythonEclipsePlugin:1.0.0-SNAPSHOT @ D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\pom.xml [INFO] [INFO] ----- [INFO] Building ExampleMavenJythonEclipsePlugin 1.0.0-SNAPSHOT [INFO] ---------------------------[ eclipse-plugin ]--------------------------- [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ ExampleMavenJythonEclipsePlugin --- [INFO] Deleting D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\target [INFO] [INFO] --- tycho-packaging-plugin:1.2.0:build-qualifier (default-build-qualifier) @ ExampleMavenJythonEclipsePlugin --- [INFO] The project's OSGi version is 1.0.0.201812181615 [INFO] [INFO] --- tycho-packaging-plugin:1.2.0:validate-id (default-validate-id) @ ExampleMavenJythonEclipsePlugin --- [INFO] [INFO] --- tycho-packaging-plugin:1.2.0:validate-version (default-validate-version) @ ExampleMavenJythonEclipsePlugin --- [INFO] [INFO] --- maven-dependency-plugin:3.1.1:unpack-dependencies (unpackPythonLibsFromJython) @ ExampleMavenJythonEclipsePlugin --- [INFO] Unpacking D:\Programme\.m2\org\python\jython-standalone\2.7.1\jython-standalone-2.7.1.jar to D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\pythonExtracted with includes "Lib/**/*" and excludes "" [INFO] [INFO] --- maven-dependency-plugin:3.1.1:copy (copyLibs) @ ExampleMavenJythonEclipsePlugin --- [INFO] Configured Artifact: org.python:jython-standalone:?:jar [INFO] Copying jython-standalone-2.7.1.jar to D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\libs\jython-standalone.jar [INFO] [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ ExampleMavenJythonEclipsePlugin --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\src\main\resources [INFO] [INFO] --- tycho-compiler-plugin:1.2.0:compile (default-compile) @ ExampleMavenJythonEclipsePlugin --- [INFO] Compiling 2 source files to D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\target\classes [INFO] [INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ ExampleMavenJythonEclipsePlugin --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\src\test\resources [INFO] [INFO] --- target-platform-configuration:1.2.0:target-platform (default-target-platform) @ ExampleMavenJythonEclipsePlugin --- [INFO] [INFO] --- tycho-packaging-plugin:1.2.0:package-plugin (default-package-plugin) @ ExampleMavenJythonEclipsePlugin --- [INFO] Building jar: D:\Programme\eclipse\modeling oxygen\MDSD-Prototyping\ExampleMavenJythonEclipsePlugin\target\ExampleMavenJythonEclipsePlugin-1.0.0-SNAPSHOT.jar [INFO] [INFO] --- tycho-p2-plugin:1.2.0:p2-metadata-default (default-p2-metadata-default) @ ExampleMavenJythonEclipsePlugin --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 55.097 s [INFO] Finished at: 2018-12-18T17:16:51+01:00 [INFO] ------------------------------------------------------------------------