Я работаю со многими небольшими, но несвязанными java-проектами. Я создал скрипт Ant, который автоматически создает .project и .classpath, когда я создаю новый проект, с необходимыми библиотеками и именем проекта. Я хотел бы иметь возможность открыть Eclipse с этим проектом из командной строки. Сейчас я делаю это вручную, закрывая старый открытый проект в рабочей области, затем я импортирую и нахожу новый проект. Я не мог найти способ сделать это из Ant или партии. Я могу открыть Eclipse, но он подходит к последнему рабочему пространству/проекту. Я не возражаю, если мне придется создавать индивидуальное пространство/проект, но я не знаю, как это сделать из сценария. Благодарим вас за любые предложения.открыть конкретный проект затмения из командной строки
ответ
я бы не рекомендовал делать это, поскольку это не так уж много усилий, чтобы импортируйте проект с помощью стандартных мастеров. Я бы остановился на закрытии неактивных проектов (см. Ниже).
Редактировать: Если вы настроены на использование муравья, чтобы привести проекты в рабочую область, вы можете реализовать плагин, выполняющий что-то вроде кода ниже.
Вы закрываете старые проекты или удаляете их? Я не вижу причин для их удаления. Если вы закрываете все проекты, над которыми вы не работаете (щелкните правой кнопкой мыши по ним и выберите закрыть проект или выберите нужный проект и щелкните правой кнопкой мыши-> закрыть несвязанные проекты), они игнорируются платформой, поэтому это не повлияет на разработку открытый проект.
Чтобы скрыть закрытые проекты с точки зрения, вы можете нажать вниз, указывая треугольник в правом верхнем углу зрения Package Explorer выберите фильтров ... и в Выберите элементы для исключения из вид: список проверить Закрытые проекты опции.
Это плагин, который будет читать набор имен из файла в корневом каталоге рабочего пространства, удалить все существующие проекты (без удаления содержимого) и создавать новые проекты в рабочей области. Использование на свой страх и риск, без ответственности бла-бла.
Возьмите содержимое и поместите его в соответствующие файлы, и вы можете упаковать плагин Eclipse. Я бы рекомендовал использовать отдельную установку Eclipse (на самом деле я рекомендую не использовать ее вообще), поскольку она будет запускаться каждый раз, когда она найдет новый файл project.txt в корневой области рабочей области.
Объявление в plugin.xml реализует точку расширения Eclipse, которая вызывается после инициализации рабочего места. Вызывается метод EarlyStartup() для StartupHelper. Он создает новый Runnable, который выполняется асинхронно (это означает, что загрузка рабочей области не будет блокироваться, если у этого плагина есть проблемы). Runnable считывает строки из волшебного файла newprojects.txt, который он ожидает увидеть в корневой области рабочей области. Если он найдет какое-либо содержимое, он удалит/создаст проекты.
Update: Помощник был изменен, чтобы позволить проекты, которые будут созданы за пределами рабочей области, если определить значение в newprojects.txt предполагается, что является абсолютной URI проекта. Обратите внимание, что он не выходит из строки, поэтому, если вы находитесь на платформе Windows, используйте двойные слэши на пути.
Пример содержания:
#will be created in the workspace
project1
#will be created at c:\test\project2
project2=c:\\test\project2
удачи!
/META-INF/MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Project fettling Plug-in
Bundle-SymbolicName: name.seller.rich;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: name.seller.rich.Activator
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.workbench;bundle-version="3.4.1",
org.eclipse.swt;bundle-version="3.4.1",
org.eclipse.core.resources;bundle-version="3.4.1"
Bundle-ActivationPolicy: lazy
/plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension
point="org.eclipse.ui.startup">
<startup class="name.seller.rich.projectloader.StartupHelper"/>
</extension>
</plugin>
/.project:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>name.seller.rich.projectloader</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.ManifestBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.pde.SchemaBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
/.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/java"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
/src/main/java/name/seller/rich/Activator.java:
package name.seller.rich;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plug-in life cycle
*/
public class Activator extends Plugin {
// The plug-in ID
public static final String PLUGIN_ID = "name.seller.rich";
// The shared instance
private static Activator plugin;
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static Activator getDefault() {
return plugin;
}
/**
* The constructor
*/
public Activator() {
}
@Override
public void start(final BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
@Override
public void stop(final BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
}
/SRC/главная/Java/имя/продавец/богатый/projectloader/StartupHelper .java:
package name.seller.rich.projectloader;
import java.io.File;
import java.io.FileInputStream;
import java.util.Map;
import java.util.Properties;
import name.seller.rich.Activator;
import org.eclipse.core.internal.resources.ProjectDescription;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.PlatformUI;
public class StartupHelper implements IStartup {
private static final class DirtyHookRunnable implements Runnable {
private IWorkspaceRoot workspaceRoot;
private DirtyHookRunnable(final IWorkspaceRoot workspaceRoot) {
this.workspaceRoot = workspaceRoot;
}
public void run() {
try {
IPath workspaceLocation = this.workspaceRoot.getLocation();
File startupFile = new File(workspaceLocation.toOSString(),
"newprojects.txt");
IProgressMonitor monitor = new NullProgressMonitor();
Properties properties = new Properties();
if (startupFile.exists()) {
properties.load(new FileInputStream(startupFile));
}
if (properties.size() > 0) {
// delete existing projects
IProject[] projects = this.workspaceRoot.getProjects();
for (IProject project : projects) {
// don't delete the content
project.delete(false, true, monitor);
}
// create new projects
for (Map.Entry entry : properties.entrySet()) {
IProject project = this.workspaceRoot
.getProject((String) entry.getKey());
// insert into loop
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setName((String) entry.getKey());
String location = (String) entry.getValue();
// value will be empty String if no "=" on the line
// in that case it will be created in the workspace
// WARNING, currently windows paths must be escaped,
// e.g. c:\\test\\myproject
if (location.length() > 0) {
IPath locationPath = new Path(location);
projectDescription.setLocation(locationPath);
}
project.create(projectDescription, monitor);
// project.create(monitor);
project.open(monitor);
}
}
} catch (Exception e) {
IStatus status = new Status(IStatus.INFO, Activator.PLUGIN_ID,
0, "unable to load new projects", null);
Activator.getDefault().getLog().log(status);
}
}
}
public StartupHelper() {
super();
}
public final void earlyStartup() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
workbench.getDisplay().asyncExec(new DirtyHookRunnable(workspaceRoot));
}
}
Частичное решение: Открыть затмение в заданном рабочем пространстве:
eclipse.exe -data C: \ имя рабочего пространства код \
Как уже упоминалось, я могу сделать это уже, но это не очень помогает. Мне еще нужно закрыть предыдущий проект и перейти через импорт, чтобы открыть новый. – alex
Другое possible option дано на this question. Суть ответа заключается в том, если вы CDT установлен, вы можете сделать:
eclipse -nosplash
-application org.eclipse.cdt.managedbuilder.core.headlessbuild
-import {[uri:/]/path/to/project}
-importAll {[uri:/]/path/to/projectTreeURI} Import all projects under URI
-build {project_name | all}
-cleanBuild {projec_name | all}
Хитрость здесь заключается в том, что он может импортировать любой проект, а не только проекты C.
- 1. Создание файла войны затмения из командной строки
- 2. Ошибки при запуске затмения из командной строки
- 3. Отправка аргументы командной строки из Затмения
- 4. Вызов опции Формата Затмения из командной строки
- 5. Открыть проект AndroidStudio из командной строки на OSX
- 6. Проект RAD7 из командной строки
- 7. Открыть приложение из командной строки
- 8. открытая перспектива затмения в eclipse из командной строки
- 9. Извлечение аргументов командной строки из затмения Run Configuration
- 10. Android проект исчез из Затмения
- 11. Чтобы создать проект затмения только из папок
- 12. Visual Studio. Опубликовать проект из командной строки
- 13. Создайте проект андроида из командной строки
- 14. Запустить проект Ecplise/PyDev из командной строки
- 15. Запустить проект Eclipse из командной строки
- 16. Как обновить проект SSDT из командной строки?
- 17. Как удалить проект Phonegap из командной строки
- 18. Запустите проект идеи intellij из командной строки
- 19. Компилировать проект Flex Builder из командной строки
- 20. Как анализировать проект .net из командной строки?
- 21. создать Maven проект из командной строки
- 22. Как запустить проект CoffeeScript из командной строки
- 23. Как запустить проект Java из командной строки
- 24. Компилировать проект Qt из командной строки
- 25. включить файл в проект из командной строки
- 26. Удалить ссылку на проект из командной строки
- 27. osx компилирует проект AS3 из командной строки
- 28. Как перекомпилировать проект netbeans из командной строки?
- 29. Запустить проект Xamarin из командной строки
- 30. Опубликовать WPF проект из командной строки
Прежде всего, спасибо за ответ. Это интересное занятие, и я буду смотреть на него, но это может показаться немного в стороне. Еще несколько слов о моей настройке: мы генерируем java-проекты (.java, resources) посредством предварительной обработки с «основной» базы кода. Затем мы настраиваем и компилируем его в банки. Иногда нам нужно отлаживать в Eclipse, после чего мы вручную создаем проект и импортируем источник, res и библиотеки. Я сделал этот процесс автоматически, и я хотел бы закончить создание кода, открыв Eclipse с вновь созданным проектом. Старые проекты выбрасываются (закрыты/удалены). – alex
Я не устарел от использования Ant, все идет, включая пакет (Win platform). – alex
это немного взломать, но вы можете определить плагин, который проверяет хорошо известный файл для «нового» проекта при запуске Eclipse. Внедряя интерфейс IStartup, вызывается метод earlyStartup(), и вы можете создать проект, как указано выше. Если я получу некоторое время, я соберу более подробный ответ –