Грешка при зависимостта на проекта при използване на моето локално p2 хранилище с необходимите jar файлове

Създадох приставка за eclipse и имам нужда от преобразуване на проекта за приставка за eclipse в maven, така че да го преобразувам в maven с помощта на Tycho. Когато се опитам да изпълня като приложение за eclipse, работи добре. Но когато се опитам да maven чисти не успява.

[INFO] Scanning for projects...
[INFO] Cannot complete the request.  Generating details.
[INFO] Cannot complete the request.  Generating details.
[INFO] {osgi.ws=gtk, osgi.os=linux, osgi.arch=x86, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR]   Software being installed: xxx 1.0.0.qualifier
[ERROR]   Missing requirement: xxx 1.0.0.qualifier requires 'bundle       
org.eclipse.ui 0.0.0' but it could not be found
[ERROR] 
[ERROR] Internal error: java.lang.RuntimeException: No solution found because the problem is      
unsatisfiable.: [Unable to satisfy dependency from xxx 1.0.0.qualifier to 
bundle org.eclipse.ui 0.0.0.; Unable to satisfy dependency from xxx
1.0.0.qualifier to bundle org.eclipse.core.runtime 0.0.0.; Unable to satisfy dependency from 
xxx 1.0.0.qualifier to bundle org.eclipse.jdt.core 3.9.2.; Unable to satisfy 
dependency from xxx 1.0.0.qualifier to bundle org.eclipse.core.resources 
3.8.101.;     Unable to satisfy dependency from xxx 1.0.0.qualifier to bundle 
org.eclipse.jdt.ui 3.9.2.; Unable to satisfy dependency from xxx
1.0.0.qualifier to bundle org.eclipse.ui.console 3.5.200.; Unable to satisfy dependency from 
xxx 1.0.0.qualifier to bundle org.eclipse.ui.editors 3.8.100.; Unable to 
satisfy dependency from xxx 1.0.0.qualifier to bundle 
com.test.dependency.bundles 1.0.0.; Unable to satisfy dependency from xxx   
1.0.0.qualifier to package org.eclipse.jface.text 0.0.0.; Unable to satisfy dependency from test-
automation-plugin 1.0.0.qualifier to package org.eclipse.jface.text.presentation 0.0.0.; Unable 
to satisfy dependency from txxx 1.0.0.qualifier to package org.eclipse.jface.text.rules 0.0.0.; 
Unable to satisfy dependency from xxx 1.0.0.qualifier to package org.eclipse.jface.text.source 
0.0.0.; No solution found because the problem is unsatisfiable.] -> [Help 1]
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: java.lang.RuntimeException: No solution found because the problem is unsatisfiable.:  
[Unable to satisfy dependency from xxx 1.0.0.qualifier to bundle org.eclipse.ui 0.0.0.; Unable to 
satisfy dependency from xxx 1.0.0.qualifier to bundle org.eclipse.core.runtime 0.0.0.; Unable to 
satisfy dependency from xxx 1.0.0.qualifier to bundle org.eclipse.jdt.core 3.9.2.; Unable to 
satisfy dependency from xxx 1.0.0.qualifier to bundle org.eclipse.core.resources 3.8.101.; 

моят файл pom.xml:

 <?xml version="1.0" encoding="UTF-8"?>
    <project>
     <modelVersion>4.0.0</modelVersion>
     <groupId>xxx</groupId>
     <artifactId>parent</artifactId>
     <version>1.0.0-SNAPSHOT</version>
     <packaging>pom</packaging>
     <modules>
     <module>../xxx</module>
      </modules>

     <properties>
      <tycho.version>0.19.0</tycho.version>
      <tycho-extras.version>0.19.0</tycho-extras.version>
      <kepler-repo.url>http://download.eclipse.org/releases/kepler</kepler-repo.url>    
     </properties> 

     <repository>
         <id>third-party-eclipse-plugins</id>
         <layout>p2</layout>
         <url>${project.baseUri}dependency/p2-repo</url>    
     </repository> 
   <pluginRepositories>
    <pluginRepository>
        <id>tycho</id>
        <url>${tycho-repo.url}</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>



  <build>
   <plugins>
    <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-maven-plugin</artifactId>
    <version>${tycho.version}</version>
    <extensions>true</extensions>
  </plugin>

  <plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <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>

  <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-source-plugin</artifactId>
            <executions>
                <execution>
                    <id>plugin-source</id>
                    <goals>
                        <goal>plugin-source</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
</plugins>

<pluginManagement>
        <plugins>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>target-platform-configuration</artifactId>
                <version>${tycho.version}</version>
            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-compiler-plugin</artifactId>
                <version>${tycho.version}</version>



                <configuration>
                    <compilerArguments>
                        <inlineJSR />
                        <enableJavadoc />
                        <encoding>ISO-8859-1</encoding>
                    </compilerArguments>
                </configuration>

            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
               <artifactId>tycho-packaging-plugin</artifactId>
                <version>${tycho.version}</version>


      <configuration>
        <strictBinIncludes>false</strictBinIncludes>
        <format>'v'yyyyMMdd-HHmm</format>
        <timestampProvider>jgit</timestampProvider>
        <jgit.ignore>
          pom.xml
        </jgit.ignore>
        <jgit.dirtyWorkingTree>${jgit.dirtyWorkingTree}</jgit.dirtyWorkingTree>
        <sourceReferences>
          <generate>true</generate>
        </sourceReferences>
        <archive>
          <addMavenDescriptor>false</addMavenDescriptor>
        </archive>
        <additionalFileSets>
          <fileSet>
            <directory>${project.build.directory}</directory>
            <includes>
              <include>.api_description</include>
            </includes>
          </fileSet>
        </additionalFileSets>
      </configuration>
      </plugin>



            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-surefire-plugin</artifactId>
                <version>${tycho.version}</version>
            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-source-plugin</artifactId>
                <version>${tycho.version}</version>
                <configuration>
                    <strictSrcIncludes>false</strictSrcIncludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-p2-director-plugin</artifactId>
                <version>${tycho.version}</version>
            </plugin>


            <!-- dependency  compromise of local plugin repository   -->



            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-p2-repository-plugin</artifactId>
                <version>${tycho.version}</version>
                <executions>
                  <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>verify-repository</goal>
                        <goal>archive-repository</goal>
                    </goals>
                    <configuration>
                        <compress>false</compress>
                        <includeAllDependencies>true</includeAllDependencies>
                    </configuration>
                    </execution>
                </executions>
                </plugin>



            <plugin>  
              <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-p2-publisher-plugin</artifactId>
                <version>${tycho-version}</version>
                <configuration>
                    <publishArtifacts>true</publishArtifacts>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.eclipse.tycho.extras</groupId>
                <artifactId>tycho-source-feature-plugin</artifactId>
                <version>${tycho-extras.version}</version>
            </plugin>



            <plugin>
                <groupId>org.eclipse.tycho.extras</groupId>
                <artifactId>tycho-custom-bundle-plugin</artifactId>
                <version>${tycho-extras.version}</version>
            </plugin>

            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-p2-plugin</artifactId>
                <version>${tycho.version}</version>
                <configuration>
                    <baselineMode>warn</baselineMode>
                    <baselineReplace>none</baselineReplace>
                    <baselineRepositories>
                        <repository>
                            <url>http://download.eclipse.org/eclipse/updates/4.2</url>
                        </repository>
                    </baselineRepositories>
                </configuration>
            </plugin>




            <!--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-compiler-plugin</artifactId>
                                     <versionRange>0.19.0</versionRange>
                                        <goals>
                                            <goal>compile</goal>
                                         </goals>
                                      </pluginExecutionFilter>
                                           <action>
                                            <ignore/>
                                            </action>
                                 </pluginExecution>


                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.eclipse.tycho
                                    </groupId>
                                    <artifactId>
                                        tycho-packaging-plugin
                                    </artifactId>
                                    <versionRange>
                                        [0.19.0,)
                                    </versionRange>
                                    <goals>
                                        <goal>build-qualifier</goal>
                                        <goal>validate-version</goal>
                                        <goal>validate-id</goal>

                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

</build>

I have googled and not able to narrow down the cause of it.i have gone through Tycho cannot resolve dependency to bundle although present in the target file but i am not able to get teh solution. I am new to this tycho.please suggest some solutions how iam able to add these dependencies to tycho?

файл content.xml в моето локално хранилище:

  <?xml version='1.0' encoding='UTF-8'?>
 <?metadataRepository version='1.1.0'?>
 <repository name='file:/C:/p2-repo/ - metadata'     
 type='org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository' version='1'>
 <properties size='2'>
  <property name='p2.timestamp' value='1414673338570'/>
  <property name='p2.compressed' value='true'/>
  </properties>
 </repository>

artifacts.xml:

 <?xml version='1.0' encoding='UTF-8'?>
 <?artifactRepository version='1.1.0'?>
 <repository name='file:/C:/p2-repo/ - artifacts'     
  type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
  <properties size='2'>
   <property name='p2.timestamp' value='1414673338667'/>
   <property name='p2.compressed' value='true'/>
  </properties>
  <mappings size='3'>
  <rule filter='(&amp; (classifier=osgi.bundle))'     
   output='${repoUrl}/plugins/${id}_${version}.jar'/>
   <rule filter='(&amp; (classifier=binary))' output='${repoUrl}/binary/${id}_${version}'/>
   <rule filter='(&amp; (classifier=org.eclipse.update.feature))'    
   output='${repoUrl}/features/${id}_${version}.jar'/>
  </mappings>
  <artifacts size='0'/>
 </repository>

person Obuli Sundar    schedule 30.10.2014    source източник
comment
Този въпрос започва като много валиден въпрос - и Ник му отговаря правилно - но след това от нищото добавяте ограничението, че искате да използвате някакво (бъги?) локално p2 хранилище, което напълно обезсилва отговора. Ето защо промяната на обхвата на въпросите е неодобрена в stackoverflow. Вместо това трябваше да зададете нов въпрос с допълнителното ограничение.   -  person oberlies    schedule 31.10.2014
comment
Промених заглавието, така че другите да могат да видят, че това е грешка в доста необичайна настройка и следователно да знаят какво да очакват тук.   -  person oberlies    schedule 31.10.2014


Отговори (2)


Вие сте посочили свойство за местоположението на хранилището на Kepler, но не сте казали на Tycho да го използва. Опитайте да добавите следното към вашия pom.xml:

<repositories>
    <repository>
        <id>eclipse-kepler</id>
        <layout>p2</layout>
        <url>${kepler-repo.url}</url>
    </repository>
</repositories>

За да създадете свое собствено хранилище на Eclipse p2, първо изтеглете необходимата версия на eclipse (http://www.eclipse.org/downloads/) и го извлечете в локална папка (да кажем "/myfolder" за този пример). Вътре в "myfolder" трябва да имате папка "eclipse", след това под нея папка "plugins" и "features" плюс различни други файлове и папки.

Използвайте следната команда, за да създадете P2 хранилище:

/myfolder/eclipse.exe -consolelog -nosplash -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/myfolder/p2-repo/ -artifactRepository file:/myfolder/p2-repo/ -source /myfolder/eclipse -publishArtifacts
person Nick Wilson    schedule 30.10.2014
comment
Благодаря за отговора Не искам да използвам хранилището на kepler, създадох мое собствено хранилище p2, което съдържа всички необходими jar файлове в него. все още показва същата грешка. ‹repository› ‹id›third-party-eclipse-plugins‹/id› ‹layout›p2‹/layout› ‹url›${project.baseUri}dependency/p2-repo‹/url› ‹/repository› използвах като това dependency/p2-repo е моето хранилище - person Obuli Sundar; 30.10.2014
comment
Вашето локално репо съдържа ли всички добавки за eclipse, споменати в съобщението за грешка (org.eclipse.ui и т.н.)? - person Nick Wilson; 30.10.2014
comment
да, поставих всички jar файлове в папка, наречена p2-repo, и я преобразувах в p2-репозиторий, като използвах следната команда java -jar C:eclipse/plugins/org.eclipse.equinox.launcher_*.jar -application org.eclipse .equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository файл:/C:/p2-repo/ -artifactRepository файл:/C:/p2-repo/ -source /C:/p2-repo/ -compress -publishArtifacts - person Obuli Sundar; 30.10.2014
comment
Редактирах въпроса си с content.xml и artifacts.xml - person Obuli Sundar; 30.10.2014
comment
Файловете с артефакт и съдържание трябва да са много по-големи. Командата, която споменахте, приема стандартна структура на папките на продукта на Eclipse, а не само jar файловете (т.е. папка с добавки и функции под папката източник). Можете да използвате стандартна папка за инсталиране на Eclipse като източник. - person Nick Wilson; 30.10.2014
comment
Имам само стандартните jar файлове, бихте ли ми казали как да създам p2 хранилище за тези jar файлове. Трябва да поставя 8 зависимости като jar файлове в p2 хранилището. - person Obuli Sundar; 30.10.2014
comment
Благодаря ви много :) сега зависимостта е добавена. но отново възникна друга грешка:( [ГРЕШКА] Вътрешна грешка: java.lang.RuntimeException: Не може да се определи пакетът от фрагменти за изпълнение на SWT за среда {osgi.ws=gtk, osgi.os= linux, osgi.arch=x86, org.eclipse.update.install.features=true} -› [Помощ 1] org.apache.maven.InternalErrorException: Вътрешна грешка: java.lang.RuntimeException: Не може да се определи пакетът от фрагменти за изпълнение на SWT за среда {osgi.ws=gtk, osgi.os=linux, osgi.arch=x86, org.eclipse.update.install.features=true} - person Obuli Sundar; 31.10.2014
comment
Тази грешка е, защото имате множество целеви среди, но локалното P2 хранилище, което сте създали, съдържа само една версия на SWT. Ще трябва да разполагате с другите версии в P2 хранилище. Има ли причина да не можете да използвате централния? Или поне да го прокси с Nexus? Ще улесни нещата. - person Nick Wilson; 03.11.2014
comment
как мога да имам други версии на SWT в моето p2 хранилище, не мога да използвам централно хранилище, трябва да използвам собственото си p2 хранилище за него. - person Obuli Sundar; 04.11.2014
comment
Ще трябва да използвате RCP Delta Pack, за да създадете допълнително локално P2 хранилище. Можете да изтеглите делта пакетите за вашата конкретна версия на Eclipse от уебсайта на Eclipse. - person Nick Wilson; 04.11.2014
comment
можете ли да ме преведете през някои сайтове за създаване на p2 хранилище с rcp delta pack - person Obuli Sundar; 07.11.2014
comment
Правите го по същия начин, по който сте създали другото локално P2 хранилище. Все още силно препоръчвам да настроите Nexus като прокси към централното хранилище. Ако вашата компания има нужда да бъде убедена, че това е добра идея, кажете им, че това, че не го правят, просто им е коствало седмица работа :) - person Nick Wilson; 07.11.2014
comment
Благодаря за отговора ви.. можете ли да ме насочите как да настроя прокси репо на nexsus. Трябва да го завърша скоро... моля те... - person Obuli Sundar; 07.11.2014
comment
Ще ви трябва Nexus OSS, P2 Repo плъгин и P2 Bridge Plugin. Google nexus oss p2 прокси. - person Nick Wilson; 07.11.2014

За да разрешите проблема относно липсващите зависимости:

[ERROR]   Software being installed: xxx 1.0.0.qualifier
[ERROR]   Missing requirement: xxx 1.0.0.qualifier requires 'bundle       
          org.eclipse.ui 0.0.0' but it could not be found

изглежда, че вашата функция/добавка "xxx" изисква изтегляне на добавката org.eclipse.ui, преди да може да бъде инсталирана.

Трябва да проверите настройките си от конфигурационния си pom по следния начин:

 <properties>
  <tycho.version>0.25.0</tycho.version>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <repository.url>http://download.eclipse.org/releases/neon</repository.url>
 </properties>

 <repositories>
  <repository>
   <id>NeonRepository</id>
   <url>${repository.url}</url>
   <layout>p2</layout>
  </repository>

ако сте настроили вашето самостоятелно хоствано p2 хранилище, уверете се, че страницата е правилно изградена. Можете да проверите това, ако изберете (в eclipse) Помощ -> Инсталиране на нов софтуер. Eclipse трябва да покаже предоставените части. Ако нищо не се показва, дори ако сте премахнали отметките във всички квадратчета, трябва да проверите вашето p2-хранилище. Той трябва да съдържа контейнера „features“ и „plugins“, както и artifacts.jar и content.jar >. Ако имате само двете папки, трябва да стартирате

eclipse -application org.eclipse.equinox.p2.publisher.UpdateSitePublisher
 -metadataRepository file:/<some location>/repository
 -artifactRepository file:/<some location>/repository
 -source /<location with a site.xml>
 -configs gtk.linux.x86
 -compress
 -publishArtifacts

в CLI/Shell. За повече информация проверете документацията на eclipse.

person L12    schedule 17.08.2016