在 Eclipse 中完全重命名项目

Posted

技术标签:

【中文标题】在 Eclipse 中完全重命名项目【英文标题】:Completely renaming a project in Eclipse 【发布时间】:2014-05-21 01:58:54 【问题描述】:

我已经在 Eclipse 中完成了 Refactor -> Rename 并且项目已在 Eclipse 中成功重命名。但是当我将它复制/粘贴到文件夹中时,它仍然保留旧名称。

我怎样才能完全重命名它?

【问题讨论】:

when I copy/paste it in a folder 是什么意思?你的意思是包名是旧的? 当我对我的应用程序进行一些备份时,我会将其复制并粘贴到我的备份文件夹中。包含项目的文件夹名称保留其旧名称。 【参考方案1】:

从项目文件夹中打开您的.project 文件并更改其中的以下值。

您需要在其中更改为项目名称。

另一种方式,

从项目资源管理器中复制旧项目,并将其粘贴到那里,它会要求新名称,给一个新名称,然后完成。

【讨论】:

那里的名字改成新名字了,但文件夹还是老的。 那是因为你没有重命名文件夹。从项目资源管理器中复制旧项目,并将其粘贴到那里,它会要求新名称,给一个新名称,然后完成。 似乎是合法的事情 xD 好的,如果您有任何与 android 相关的错误,请联系我,我一定会在空闲时间为您提供帮助 :) 只需将任何消息写到我的任何帖子或此处,完成。【参考方案2】:

1) 右键单击​​你的包 -> 重构 -> 重命名。选择更新引用并重命名子包。

2) 在 AndroidMenifest.xml 中更改包名

package=”com.example.new_package_name”

3) 在 resources->values->string.xml 中将 app_name 更改为“new_name”

<string name="app_name">"new_name"</string>

希望这会奏效!

【讨论】:

【参考方案3】:

TrueStudio 也是基于 Eclipse 的,它可能以类似的方式工作。但是,重构项目名称不起作用。 我将一个项目克隆到另一个项目的方法是在主文件夹上使用 Ctrl-C/Ctrl-V,然后将新文件夹重命名为所需的名称。现在我们只需要更改一个目录名和一些文件名。我们需要修改几个文件的内容。之后,工程就可以在TrueStudio中打开了。

简而言之,看下面的例子:

Rename Project:
Copy the project directory
“Nucleo-H743ZI_Jack_01-”
“Nucleo-H743ZI_Jack_010 - Copy”

Rename it to the new name
“Nucleo-H743ZI_Jack_010 - Copy”
“Nucleo-H743ZI_Jack_011_tcp”

Rename this directory
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_010”
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp”

Rename these files
“Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_010.ioc”
“Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_011_tcp.ioc”
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_010.elf.launch”
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_011_tcp.elf.launch”

Change these files
“Nucleo-H743ZI_Jack_011_tcp\.mxproject” (3 occurrences)
“Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_011_tcp.ioc” (2 occurrences)
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\.cproject” (3 occurrences)
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\.project” (1 occurrence)
“Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\Nucleo-H743ZI_Jack_011_tcp.elf.launch” (5 occurrences)

Note: also get rid of absolute paths in Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp\.project

Open project
File -> Open Project from File System…
Directory: “Nucleo-H743ZI_Jack_011_tcp\TrueSTUDIO\Nucleo-H743ZI_Jack_011_tcp”
Click OK and Finish

一个放在项目根目录下的python脚本可以做到这一点:

chproj.py

# Changed the name of an TrueStudio project
import os
import sys

def inplace_change(filename, old_string, new_string):
    # Safely read the input filename using 'with'
    with open(filename) as f:
        s = f.read()
        if old_string not in s:
            print '"old_string" not found in filename.'.format(**locals())
            return

    # Safely write the changed content, if found in the file
    with open(filename, 'w') as f:
        print 'Changing "old_string" to "new_string" in filename'.format(**locals())
        s = s.replace(old_string, new_string)
        f.write(s)

# Getting the current work directory (cwd)
dir_abs = os.getcwd()
dir_abs_split=dir_abs.split('\\')
n = len(dir_abs_split)
dst_dir = dir_abs_split[n-1]
new_name = dst_dir
print dir_abs

# Get original name
#src_dir = os.listdir(ts_dir)[0]
#old_name = src_dir
#print "old_name: " + old_name

mxproject_filename = dir_abs + "\.mxproject"
with open(mxproject_filename) as f:
    content = f.readlines()
second_line = content[1]
#print second_line
second_line_split=second_line.split('/')
n=len(second_line_split)
old_name = second_line_split[n-2]
print "old_name: " + old_name
print "new_name: " + new_name

ioc_filename_old = dir_abs + "\\" + old_name + ".ioc"
ioc_filename_new = dir_abs + "\\" + new_name + ".ioc"

ts_dir = dir_abs + "\TrueSTUDIO"

ts_name_old = ts_dir + "\\" + old_name
ts_name_new = ts_dir + "\\" + new_name

elf_launch_old = ts_dir + "\\" + new_name + "\\" + old_name + ".elf.launch"
elf_launch_new = ts_dir + "\\" + new_name + "\\" + new_name + ".elf.launch"

cproject = ts_dir + "\\" +  new_name + "\.cproject"
project = ts_dir + "\\" +  new_name + "\.project"

print "Change path in " + project

new_path = "PARENT-2-PROJECT_LOC"
old_path = dir_abs.replace("\\", "/")
old_path = old_path.replace("c:", "C:")
print old_path
print new_path

if os.path.isfile(project):
    # file exists
    print "Modify file " + project
    inplace_change(project, old_path, new_path)

if (new_name == old_name):
    print "Nothing else to change"
    sys.exit(0)


print "Rename directories and files:"

#os.rename(src, dst)
if os.path.isdir(ts_name_old):
    # dir exists
    print "Rename directory " + ts_name_old + " to " + ts_name_new
    os.rename(ts_name_old, ts_name_new)

#os.rename(src, dst)
if os.path.isfile(ioc_filename_old):
    # file exists
    print "Rename file " + ioc_filename_old + " to " + ioc_filename_new
    os.rename(ioc_filename_old, ioc_filename_new)

if os.path.isfile(elf_launch_old):
    # file exists
    print "Rename file " + elf_launch_old + " to " + elf_launch_new
    os.rename(elf_launch_old, elf_launch_new)

print "Replace strings in files:"

if os.path.isfile(cproject):
    # file exists
    print "Modify file " + cproject
    inplace_change(cproject, old_name, new_name)

if os.path.isfile(project):
    # file exists
    print "Modify file " + project
    inplace_change(project, old_name, new_name)
    inplace_change(project, old_path, new_path)

if os.path.isfile(ioc_filename_new):
    # file exists
    print "Modify file " + ioc_filename_new
    inplace_change(ioc_filename_new, old_name, new_name)

if os.path.isfile(elf_launch_new):
    # file exists
    print "Modify file " + elf_launch_new
    inplace_change(elf_launch_new, old_name, new_name)

if os.path.isfile(mxproject_filename):
    # file exists
    print "Modify file " + mxproject_filename
    inplace_change(mxproject_filename, old_name, new_name)

欢迎提出任何改进意见或建议!

【讨论】:

以上可能不适用,适用于STM32。【参考方案4】:

复制和粘贴 ANDROID 项目并创建一个新项目很整洁。请按照以下步骤操作:

A.如果您使用的是 Eclipse 并且您需要做的就是首先打开您要复制的项目(不要忘记打开您需要复制的项目), 然后在 Eclipse 左侧的资源管理器包窗口中克隆(复制/粘贴)您的 Android 项目。 粘贴时,Eclipse 会要求您输入新的项目名称。给它一个新的项目名称。 由于 Eclipse 项目名称和目录独立于应用程序名称和包, 以下步骤将帮助您了解如何更改包名称。注意:有两种类型的包名。 (Manifest 文件中指明的主包和包含所有 java 文件的子包)

1. After you get done above step, to change Application package name(main package), follow the following steps:
    First right click your project
    Then go to "Android tools"
    Then select "Rename Application package"
    Enter a new name in a dialogue window , and hit OK.
    Then It will show you in which part of your project the Application name will be changed. It will show you that
    the Application name will be changed in manifest, and in most relevant Java files. Hit "OK"
    YOU DONE in this part, but make sure you rebuild your project to take effect. 
    
    To rebuild your project, go to ""project" >>> "Clean" >>>> select a Project from a projects list, and hit "OK"
    Finaly, you can run your new project. 
    
2.  To change src package(sub package) names of packages within Src folder follow the following steps:
    First you need to create new package: (src > right click > new > package).

    Example of creating package: com.myCompany.executable 

    Follow these steps to move the Java files from the old that has already been copied package in part A to your new package.

    Select the Java files within that old package
    Right click that java files
    select "Refactor" option
    select "Move" option
    Select your preferred package from the list of packages in a dialogue window. Most probably you need to select the new one you just created and hit "OK"

对于使用 Android Studio 的用户,请点击here,轻松搞定。

【讨论】:

以上是关于在 Eclipse 中完全重命名项目的主要内容,如果未能解决你的问题,请参考以下文章

eclipse 工作区:如何重命名工作区

Xcode,我如何完全重命名一个项目?

Eclipse中复制项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题

当使用Eclipse在Glassfish上重命名和部署动态Web项目的名称时,获取HTTP状态404 - 未找到

播放框架1.2.5应用项目如何重命名

java如何重命名所有包名