Project

General

Profile

TaxonomicEditorDevelopmentEnvironment » History » Revision 19

Revision 18 (Andreas Müller, 06/03/2022 12:33 PM) → Revision 19/29 (Andreas Müller, 06/03/2022 12:47 PM)

# Taxonomic Editor development environment 

 **The main source of information is [Setting up a Taxonomic Editor development environment](http://cybertaxonomy.org/taxeditor/getting-started.html) and #4227** 


 {{toc}} 

 {{child_pages(depth=1)}} 

 The steps to set up the develpment environment as documented in #4227: 

 1. git checkout generated-resources 
 1. run `setup-project.sh` 
 1. Install m2e feature (if not already installed) in eclipse 
  * Update-Site: http://download.eclipse.org/releases/neon 
  * Feature to install: m2e - Maven Integration for Eclipse 
 1. Import projects as maven projects into the eclipse workspace 
  * **Note**: A dialog may pop up saying that a mapping for *antrun* and maybe others are missing. Just install all connectors that are available. The problem with antrun will then be solved by importing `cdmlib/lifecycle-mapping-metadata.xml` in the preferences under *Maven->Lifecycle Mappings->Change mapping file location* 
 ![](#4227#maven_plugin_connectors.png) 
 1. Open `/eu.etaxonomy.taxeditor/rcp.target` and reload let it resolve all dependencies 
 1. Click "Set as target platform" 

 Updating a project after switching to an other branch for example: 

 1. ./setup-project 
 1. für alle taxeditor projekte: Maven > Update Project Alt+F5 

 This page only contains additional information not yet contained in the above linked page. 

 

 ## Download timeouts in the maven validate phase 

 This especially happens with the http://download.eclipse.org/releases/ repository from where plugins have to be downloaded. 

 The according error message in the maven log is: 

 ~~~ 
 [ERROR] Internal error: java.lang.RuntimeException: Failed to load p2 repository with ID 'eclipse-swtbot' from location http://download.eclipse.org/releases/indigo/: Unable to read repository at http://download.eclipse.org/releases/indigo. Unable to read repository at http://download.eclipse.org/releases/indigo/201109230900/content.jar. Read timed out -> [Help 1] 
 ~~~ 

 Running maven in the debug mode (`-X`) reveals that this is a socket timeout:  

 ~~~ 
 Caused by: java.net.SocketTimeoutException: Read timed out 
	 at java.net.SocketInputStream.socketRead0(Native Method) 
	 at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) 
	 at java.net.SocketInputStream.read(SocketInputStream.java:170) 
	 at java.net.SocketInputStream.read(SocketInputStream.java:141) 
	 at org.apache.http.impl.io.AbstractSessionInputBuffer.read(AbstractSessionInputBuffer.java:198) 
	 at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:178) 
	 at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137) 
	 at java.io.FilterInputStream.read(FilterInputStream.java:133) 
	 at java.io.FilterInputStream.read(FilterInputStream.java:107) 
	 at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer$1.performFileTransfer(AbstractRetrieveFileTransfer.java:178) 
	 at org.eclipse.ecf.filetransfer.FileTransferJob.run(FileTransferJob.java:73) 
	 at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
 ~~~ 

 In the above download process two classes are involved which have different timeout settings: 

 * org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer 
 * java.net.SocketInputStream 

 ### setting timeout controls for JRE-http based transport in org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer 

 See http://wiki.eclipse.org/Equinox/p2/TransportDebugging.  

 In case of equinox transport timeouts, a message like the following should become visible in the log. 

 ~~~ 
     Timeout while reading input stream. 
     The following system properties can be used to adjust the readTimeout, retryAttempts, and closeTimeout 
     org.eclipse.ecf.provider.filetransfer.retrieve.readTimeout=xxx 
     org.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts=xxx 
     org.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout=xxx 
 ~~~ 

 ### Setting the waggon timeouts in the setting.xml 

 **This is the recommended solution!** 

 see http://maven.apache.org/guides/mini/guide-http-settings.html and http://stackoverflow.com/questions/23510525/maven-dependency-timeout-settings#27015320 

 This setting is supposed to configure the java.net.SocketInputStream timeouts which therefore is the correct one in order to fix the above problem. 

 Setting in the `~/.m2/settings.xml` 

 ~~~xml 
 <server> 
   <id>eclipse-swtbot</id> 
   <!-- username and password are required otherwise the tycho P2PasswordUtil will fail with an NPE --> 
   <username></username> 
   <password></password> 
   <configuration> 
     <httpConfiguration> 
       <all> 
         <connectionTimeout>180000</connectionTimeout> 
         <readTimeout>180000</readTimeout> 
       </all> 
     </httpConfiguration> 
   </configuration> 
 </server> 
 ~~~ 

 The error which is thrown when the user credentials are missing: 

 ~~~ 
 [ERROR] Internal error: java.lang.NullPointerException -> [Help 1] 
 org.apache.maven.InternalErrorException: Internal error: java.lang.NullPointerException 
         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:121) 
         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
         at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
         at java.lang.reflect.Method.invoke(Method.java:497) 
         at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
         at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
         at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
         at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
 Caused by: java.lang.NullPointerException 
         at org.eclipse.tycho.p2.remote.P2PasswordUtil.setCredentials(P2PasswordUtil.java:69) 
         at org.eclipse.tycho.p2.remote.RemoteRepositoryLoadingHelper.setPasswordForLoading(RemoteRepositoryLoadingHelper.java:124) 
         at org.eclipse.tycho.p2.remote.RemoteRepositoryLoadingHelper.getEffectiveLocationAndPrepareLoad(RemoteRepositoryLoadingHelper.java:82) 
         at org.eclipse.tycho.p2.remote.RemoteMetadataRepositoryManager.translateAndPrepareLoad(RemoteMetadataRepositoryManager.java:47) 
         at org.eclipse.tycho.p2.remote.RemoteMetadataRepositoryManager.loadRepository(RemoteMetadataRepositoryManager.java:57) 
         at org.eclipse.tycho.p2.remote.RemoteMetadataRepositoryManager.loadRepository(RemoteMetadataRepositoryManager.java:52) 
         at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.loadMetadataRepository(TargetPlatformFactoryImpl.java:297) 
         at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.gatherExternalInstallableUnits(TargetPlatformFactoryImpl.java:269) 
         at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:174) 
         at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:126) 
         at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:1) 
         at org.eclipse.tycho.p2.manager.ReactorRepositoryManagerImpl.computePreliminaryTargetPlatform(ReactorRepositoryManagerImpl.java:82) 
         at org.eclipse.tycho.p2.resolver.P2DependencyResolver.computePreliminaryTargetPlatform(P2DependencyResolver.java:221) 
         at org.eclipse.tycho.core.resolver.DefaultTychoResolver.resolveProject(DefaultTychoResolver.java:109) 
         at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:77) 
         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:266) 
         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
         ... 11 more 
 [ERROR]  
 ~~~ 

 Further informations especially for remoting you can find here [Taxonomic Editor Developers Guide](https://dev.e-taxonomy.eu/redmine/projects/edit/wiki/TaxonomicEditorDevelopersGuide#Remoting)