Ошибка зависимости проекта при использовании моего локального репозитория 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>

артефакты.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» для этого примера). Внутри «моей папки» у вас должна быть папка «eclipse», затем под ней папка «плагины» и «функции», а также различные другие файлы и папки.

Используйте следующую команду для создания репозитория 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. все равно показывает ту же ошибку. ‹репозиторий› ‹id›сторонних плагинов eclipse‹/id› ‹layout›p2‹/layout› ‹url›${project.baseUri}dependency/p2-repo‹/url› ‹/repository› я использовал как эта зависимость/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 file:/C:/p2-repo/ -artifactRepository file:/C:/p2-repo/ -source /C:/p2-repo/ -compress -publishArtifacts - person Obuli Sundar; 30.10.2014
comment
Я отредактировал свой вопрос с помощью content.xml и артефактов.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 - 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. 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, прежде чем его можно будет установить.

Вы должны проверить свои настройки в файле конфигурации следующим образом:

 <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/оболочке. Для получения дополнительной информации проверьте заголовок документация eclipse.

person L12    schedule 17.08.2016